我想使用SqlDataReader
使用我的SQL Server数据库中的数据填充User数组。
到目前为止,这是我的代码:
public struct User
{
public int id;
public string log;
public string password;
public User (int id1,string s, s2)
{
id=id1;
log =s;
password=s2;
}
}
User[] al = new User[50];
int i=0;
using (SqlConnection connection = new SqlConnection("string")
{
connection.Open();
SqlCommand command = new SqlCommand("Select [UserName], [Password]. from [TaUser]", connection);
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
// populate the al array with the datas from the 3 columns : ID, UserName, Password
}
}
connection.Close();
}
我知道如果我有一个简单的arraylist我可以做al.Add("")
,但是,当涉及到结构数组时,我很难。
答案 0 :(得分:1)
您的代码中存在大量错误。
首先,您的User构造函数无效,它应该是:
public User(int id1, string s, string s2)
其次,您的查询不会返回用户ID。
第三,使用List而不是数组可能会更好。
尽管如此,这应该有效
List<User> userList = new List<User>() ;
using (SqlConnection connection = new SqlConnection("string")
{
connection.Open();
SqlCommand command = new SqlCommand("Select [Id], [UserName], [Password]. from [TaUser]", connection);
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
var id = reader.GetInt32(0);
var userName = reader.GetString(1);
var pwd = reader.GetString(2);
var user = new User(id, userName, pwd);
userList.Add(user);
}
}
connection.Close();
// if you really need an array, do it here
var al = userList.ToArray()
答案 1 :(得分:0)
我建议做这样的事情:
SqlDataReader dataReader = cmd.ExecuteReader();
DataTable dataTable = new DataTable();
dataTable.Load(dataReader);
然后读出那个DataTable:
string name = dataTable.Rows[0]["UserName"] as string;
然后用收集的信息填充您的User结构。工作完成了吗?