我是一个C#的新手,但我正在尝试创建一个简单的代码来连接我的mysql数据库(我从google获得的大部分代码)。所以我有这个部分,从数据库中选择一些内容并存储在一个列表中。现在我想从另一个类访问这个,但我不知道怎么做,我也找不到谷歌的答案(这个线程也没有为我工作:Access List from another class),所以有人可以帮助我吗?
以下是特定代码:
public List<string>[] Select()
{
string query = "SELECT * FROM users";
//Create a list to store the result
List<string>[] list = new List<string>[3];
list[0] = new List<string>();
list[1] = new List<string>();
list[2] = new List<string>();
//Open connection
if (this.OpenConnection() == true)
{
//Create Command
MySqlCommand cmd = new MySqlCommand(query, connection);
//Create a data reader and Execute the command
MySqlDataReader dataReader = cmd.ExecuteReader();
//Read the data and store them in the list
while (dataReader.Read())
{
list[0].Add(dataReader["id"] + "");
list[1].Add(dataReader["test"] + "");
list[2].Add(dataReader["balance"] + "");
}
//close Data Reader
dataReader.Close();
//close Connection
this.CloseConnection();
//return list to be displayed
return list;
}
else
{
return list;
}
}
最佳答案
说真的,我认为你在这里构建数据的方式很奇怪。
您正在创建一个对象数组,其中的对象是字符串列表:
List<string>[] list = new List<string>[3];
你想在对象中思考;创建一个表示数据的类;在本例中是用户。像这样的:
public class User
{
public string Id { get; set; }
public string Test { get; set; }
public string Balance { get; set; }
}
所以我个人会做以下事情:
创建一个表示每个用户记录的类。
创建一个变量来保存用户列表。
从MySql读取并将每个记录分配给一个新的用户对象。
将用户添加到列表中。
返回列表。
将Select方法的返回类型更改为
List<User>
,如下所示:public List<User> Select() {
然后修改方法的其余部分以创建并返回用户列表。
public List<User> Select() {
List<User> list = new List<User>();
if (this.OpenConnection() == true)
{
MySqlCommand cmd = new MySqlCommand(query, connection);
MySqlDataReader dataReader = cmd.ExecuteReader();
while (dataReader.Read())
{
User user = new User();
user.Id = dataReader["id"].toString();
user.Test = dataReader["test"].toString();
user.Balance = dataReader["balance"].toString();
list.Add(user);
}
dataReader.Close();
this.CloseConnection();
}
return list;
}
然后你可以使用你的列表如下:
ClassThatContainsSelectMethod yourDBObject = new ClassThatContainsSelectMethod();
List<User> users = yourDBObject.Select();
foreach (User user in users)
{
Console.WriteLine(user.Id, user.Test, user.Balance);
}
当然,使用工厂和错误/空检查可以更好地构建这段代码,但它应该能让您朝着正确的方向前进。