C# 中如何将SQL数据库中读取到的 一整行数据 存到数组,最好是list中,请写详细答案

C# 中如何将SQL数据库中读取到的 一整行数据 存到数组,最好是list中,请写详细答案,第1张

输入框一般都是textbox,命名用户名输入框为textbox1密码为textbox2

select

*

from

【表名】

where

[字段名]='"

+

textbox1.text

+

"'

一般都是用sqldatareader

dr

去读取,如果读取到了说明这个用户名存在,那么在判断密码字段dr["pwd"].tostring()

==textbox2.text.tostring()是否等于textbox2输入的。如果没有读到,那说明这个用户名不存在,可以直接d出错误提示。

这是大概思路,如果想要全部源码可以向我直接提问,说明问题附带说明要源码就可以。

Private Sub Command1_Click()

Dim conn As ADODB.Connection

Dim Rs As ADODB.Recordset

Set conn = CreateObject("ADODB.Connection")

Set Rs = CreateObject("ADODB.Recordset")

conn.Open "provider=microsoft.jet.oledb.4.0data source=d:\db1.mdb"

Rs.Open "select id from table1", conn, 1, 3

''''''''''''''以上不是重点,只是为了链接数据

Dim a() As Long'定义a数组

Dim l As Long

l = 0

While Not Rs.EOF

ReDim Preserve a(0 To l) As Long '重定义数组大小

a(l) = Rs("id") '保存新数据

l = l + 1

Rs.MoveNext

Wend

'''''''''''''''''''以下也不是重点

Rs.Close

conn.Close

Set conn = Nothing

Set Rs = Nothing

For l = 0 To UBound(a)

Print a(l)

Next l

End Sub

首先,通过SQL语言把数据读入Dataset中,再用反射吧Dataset中的数据存入数组(其使用对象更好一些),给你个例子:

数据查询:

//数据库连接字符串(web.config来配置),可以动态更改SQLString支持多数据库.

public static string connectionString = "Data Source=" + AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.AppSettings["SQLString"] + "UTF8Encoding=TruePooling=TrueMax Pool Size=100"

/// <summary>

/// 执行查询语句,返回DataSet

/// </summary>

/// <param name="SQLString">查询语句</param>

/// <returns>DataSet</returns>

public static DataSet Query(string SQLString) {

using(SQLiteConnection connection = new SQLiteConnection(connectionString)) {

DataSet ds = new DataSet()

try {

connection.Open()

SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection)

command.Fill(ds, "ds")

} catch (System.Data.SQLite.SQLiteException ex) {

connection.Close()

throw new Exception(ex.Message)

} finally {

connection.Close()

}

return ds

}

}

数据的转换(Dataset ->数据对象):

private static ArrayList DataSetConvertToObject(DataSet ds, Type objectType) {

ArrayList objList = new ArrayList()

for (int j = 0j <ds.Tables[0].Rows.Countj++) {

Object obj = Activator.CreateInstance(objectType)

PropertyInfo[] properties = obj.GetType().GetProperties()

for (int i = 0i <ds.Tables[0].Columns.Counti++) {

string columnName = ds.Tables[0].Columns[i].Caption

string value = ds.Tables[0].Rows[j][columnName].ToString()

foreach(PropertyInfo info in properties) {

if (info.Name.Equals(columnName)) {

string propertyType = info.PropertyType.Name

switch (propertyType) {

case "Guid":

{

info.SetValue(obj, new Guid(value), null)

break

}

case "DateTime":

{

DateTimeFormatInfo format = new CultureInfo("zh-cn", true).DateTimeFormat

info.SetValue(obj, DateTime.Parse(value, format), null)

break

}

case "String":

default:

{

info.SetValue(obj, value, null)

break

}

case "Int32":

{

info.SetValue(obj, int.Parse(value), null)

break

}

case "Single":

{

info.SetValue(obj, float.Parse(value), null)

break

}

}

break

}

}

}

objList.Add(obj)

}

return objList

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9895853.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存