【发布时间】:2016-07-12 04:35:52
【问题描述】:
我正在开发 Visual Studio 2015 中的一个程序,该程序从 MySQL 中的表中提取数据。我是 SQL 新手,所以我可能会以错误的方式一起解决这个问题。我需要的是基本上将表从 MySQL 模仿到 C# 应用程序中。我创建了一个名为 DataSet4 的新数据集,其中有一个名为 DataTable1 的表。该表有 2 列,ID 和名称。现在我的代码(如下所示)只从表中提取第一行。我将如何添加一个 foreach 循环来从 mySQL 中提取所有行?我希望我说得足够清楚,否则我会尽我所能尝试解释。它还有很多东西,但我觉得我可以从那里弄清楚。我确实尝试过设置一个直接拉表的数据集,但这一直冻结我的 Visual Studio。
private void button7_Click(object sender, EventArgs e)
{
try
{
cnC03.Open();
s = "SELECT * FROM c03.tbl_kit t;";
mcd = new MySqlCommand(s, cnC03);
mdr = mcd.ExecuteReader();
if (mdr.Read())
{
DataRow newDataRow = dataSet4.Tables["DataTable1"].NewRow();
newDataRow["ID"] = mdr.GetString("ID");
newDataRow["Name"] = mdr.GetString("Name");
dataSet4.Tables["DataTable1"].Rows.Add(newDataRow);
}
else
{
MessageBox.Show("No Data");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
mdr.Close();
cnC03.Close();
}
}
新代码:
private void button7_Click(object sender, EventArgs e)
{
try
{
s = "SELECT ID, Name FROM c03.tbl_kit";
using (cnC03)
using (MySqlCommand mcd2 = new MySqlCommand(s, cnC03))
{
cnC03.Open();
using (MySqlDataReader mdr = mcd2.ExecuteReader())
{
DataTable dt = new DataTable("DataTable1");
dt.Load(mdr);
dataSet4.Tables.Add(dt);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
【问题讨论】:
-
您期望有多少行?此外,将您的资源包装在
using块中 -
我将为多个表执行此操作。例如,此表只有 3 行,但其他表有 20,000 多行。不熟悉 using 块。
标签: c# mysql visual-studio-2015