【问题标题】:Windows Forms C# retrieving SQL data using WHERE clauseWindows Forms C# 使用 WHERE 子句检索 SQL 数据
【发布时间】:2023-03-24 14:00:01
【问题描述】:

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

这个想法是在表单上有一个“更多详细信息”按钮,这将打开另一个表单,显示从 SQL 表中检索到的客户联系详细信息。名为“Project_Info”的表包含所有联系人/地址数据,使用“Project”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 子句指定的数据。

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

提前致谢

【问题讨论】:

  • 问题出在TRACK_10_PI吗?
  • 当您使用您最喜欢的数据库查询工具直接对数据库运行查询时,您会得到什么结果?
  • 你在哪里消费dt中填写的数据?
  • 看起来 TRACK_10_PI 有自己的查询,不包含 WHERE 子句。我没有看到您在哪里使用您在此处填充的数据表。
  • 你在哪里执行查询?

标签: c# sql winforms


【解决方案1】:

我建议你使用 usinngs,所以你不需要处理 expliciet。 在由您的代码填写的表单上放置一个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();
    }
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-04-05
      • 2019-10-04
      • 2020-09-21
      • 1970-01-01
      • 2020-07-02
      • 2015-02-08
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多