Windows 窗体 C# 使用 WHERE 子句检索 SQL 数据



有点业余编码员(和新手(,所以我很感激我可能以错误的方式接近这一点,所以任何关于改变我的方法的建议也将不胜感激。

这个想法是在窗体上有一个"更多详细信息"按钮,该按钮将打开另一个窗体,显示从SQL表中检索到的客户联系人详细信息。名为"Project_Info"的表包含所有联系人/地址数据,使用"项目"ID 作为唯一标识符。

按钮的代码:

private void button2_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=WIN-M9TBGRD70BU;Initial Catalog=Disk_Tracker;User ID=Tracker;Password=********");
SqlDataAdapter sda = new SqlDataAdapter("Select * FROM Project_Info WHERE (Project = 'P3890T')", con);
DataTable dt = new DataTable();
sda.Fill(dt);
{
this.Hide();
TRACK_10_PI T10 = new TRACK_10_PI();
T10.Show();
}
}

新窗体TRACK_10_PI打开,但始终显示顶行中的数据,而不是 WHERE 子句指定的数据。

我希望从数据库中检索数据而不是简单地将其硬编码到页面的原因是为了适应对信息的可能更改。

提前致谢

我建议你使用usinngs,所以你不需要显式处理。 在由代码填写的表单上放置一个datagridview。您可以参数化表单的实例化。现在你必须在TRACK_10_PI中填写数据。

例:

using (SqlConnection con = new SqlConnection("Data Source=WIN-M9TBGRD70BU;Initial Catalog=Disk_Tracker;User ID=Tracker;Password=********"))
{
using (SqlDataAdapter sda = new SqlDataAdapter("Select * FROM Project_Info WHERE (Project = 'P3890T')", con))
{
DataTable dt = new DataTable();
sda.Fill(dt);
this.Hide();
TRACK_10_PI T10 = new TRACK_10_PI(sda);
T10.Show();
}
}

我怀疑您没有以TRACK_10_PI的形式传递新创建的dt。我认为您的代码没有任何问题,除了您应该处理SqlConnectionSqlDataAdapter对象。

最新更新