【发布时间】:2016-09-24 11:38:09
【问题描述】:
我目前正在学习如何使用数据库连接以及如何读写数据。我正在为 Visual Studio 使用 Mysql 数据/连接器 6.1。这支持访问 localhost mysql 服务器。
我想显示我使用此代码登录的人的个人信息:
string query = "SELECT * FROM gebruiker WHERE id='" + id + "'";
List<string>[] list = new List<string>[5];
list[0] = new List<string>();
list[1] = new List<string>();
list[2] = new List<string>();
list[3] = new List<string>();
list[4] = new List<string>();
if (this.openConnection() == true)
{
MySqlCommand cmd = new MySqlCommand(query, connection);
//Een nieuw datareader object maken en dan query uitvoeren
MySqlDataReader dataReader = cmd.ExecuteReader();
while (dataReader.Read())
{
list[0].Add(dataReader["id"].ToString());
list[1].Add(dataReader["voornaam"].ToString());
list[2].Add(dataReader["achternaam"].ToString());
list[3].Add(dataReader["geboortedatum"].ToString());
list[4].Add(dataReader["Rol_id"].ToString());
}
dataReader.Close();
this.closeConnection();
return list;
}
我使用列表是因为我正在学习本教程:tutorial
然后,当我返回列表时,我想获取该数据并将其添加到我的 winform 上的标签中。这是我使用的代码:
DBconnect connectDB = new DBconnect();
List<string>[] persGegevens = connectDB.persoonlijkeGegevens(userId);
for (int i = 0; i <= persGegevens.Count(); i++)
{
switch (i)
{
case 0:
break;
case 1:
lblVoornaamVrbl.Text = persGegevens[i].ToString();
break;
case 2:
lblAchternaamVrbl.Text = persGegevens[i].ToString();
break;
case 3:
lblGbrtedatumVrbl.Text = persGegevens[i].ToString();
break;
case 4:
lblFuntieVrbl.Text = persGegevens[i].ToString();
break;
default:
break;
}
}
但不幸的是,代码不会将 List 中的数据转换为字符串,但元素会转换为字符串。这就是我得到的:system.collections.generic.list`1[system.string] 我也尝试使用 foreach 来执行此操作,但这不起作用,因为我无法指定必须将哪个元素放置在哪个标签中。
你们知道这里有什么问题吗?这是检索数据的正确方法吗?还是我应该使用其他东西来存储我的数据?
【问题讨论】:
-
使用 DataTable 让您的代码更易于使用stackoverflow.com/questions/11993211/…
-
@MurrayFoxcroft 根据我的经验,从来没有像这样使用 DataTable 让事情变得更容易
-
我建议您研究使用 Entity Framework 和 Linq,这可能会让您更容易理解。
-
您应该使用 MySqlCommand 参数,而不是将
id直接传递给字符串。查看here 了解更多信息 -
谢谢大家的建议。
标签: c# list tostring mysql-connector