Как сохранить несколько значений в массиве struct с помощью SqlDataReader
Я хотел бы заполнить массив User данными из моей базы данных SQL Server, используя SqlDataReader
,
Это мой код до сих пор:
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("")
Тем не менее, я борюсь, когда дело доходит до структурных массивов.
2 ответа
В вашем коде много ошибок.
Во-первых, ваш конструктор User недействителен, он должен быть:
public User(int id1, string s, string s2)
Во-вторых, ваш запрос не возвращает идентификатор пользователя.
В-третьих, было бы лучше использовать список вместо массива.
При всем этом это должно работать
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()
Я бы посоветовал сделать что-то вроде этого:
SqlDataReader dataReader = cmd.ExecuteReader();
DataTable dataTable = new DataTable();
dataTable.Load(dataReader);
Затем прочитайте этот DataTable следующим образом:
string name = dataTable.Rows[0]["UserName"] as string;
Затем заполните пользовательскую структуру собранной информацией. Работа выполнена?