将具有相同主键的2个表SQL Server连接到C#

本文关键字:SQL 2个表 Server 连接 | 更新日期: 2023-09-27 18:29:44

怎么了,伙计们,我对这个代码有一些问题,我希望你们能弄清楚

我有两个表(客户和注册)使用SQL Server

客户

  1. Id
  2. 名称
  3. 等等

注册

  1. Id
  2. 日期

我正在处理我的C#程序,我想将它们显示为listview,但我有错误,这是我的代码:

public void listdata()
    {
        SqlDataReader reader = null;
        listView1.Items.Clear();
        listView1.Columns.Clear();
        listView1.Columns.Add("ID", 55, HorizontalAlignment.Center);
        listView1.Columns.Add("Tanggal Registrasi", 150, HorizontalAlignment.Center);
        listView1.Columns.Add("Nama Pemohon", 150, HorizontalAlignment.Center);
        System.Data.SqlClient.SqlConnection conn = konn.GetConn();
        try
        {
            conn.Open();
            string sql = "select*from Ms_Register a join Ms_Coba b on a.id = b.id where id='" + textBox1.Text + "'";
            SqlCommand command = new SqlCommand(sql, conn); 
            command.ExecuteNonQuery();
            conn.Close();
            //Check
            reader = command.ExecuteReader();

            while (reader.Read())
            {
                ListViewItem item1 = new     ListViewItem(reader["id"].ToString(), 0);
                item1.SubItems.Add(reader["tanggal"].ToString());
                item1.SubItems.Add(reader["nama"].ToString());
                listView1.Items.Add(item1);
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.ToString());
        }
        finally
        {
            conn.Close();
        }
    }

两个表都有相同的id,错误显示"列名"id"不明确"有人能解决这个问题吗?感谢

将具有相同主键的2个表SQL Server连接到C#

select * from Ms_Register a join Ms_Coba b on a.id = b.id where id='" + textBox1.Text + "'"

应该是WHERE a.idWHERE b.id,在这种情况下,哪个无关紧要,因为它们是相同的

不过,这是非常糟糕的代码,您应该使用查询的参数来清除textBox1的值。您的代码容易受到SQL注入的攻击。

https://en.wikipedia.org/wiki/SQL_injection

您的查询错误,请按如下方式更改:

string sql = "select * from Ms_Register a join Ms_Coba b on a.id = b.id where a.id='" + textBox1.Text + "'";

因为两个表都包含相同的字段名称,所以我们必须提到在where子句

上选择哪个表字段