将具有相同主键的2个表SQL Server连接到C#
本文关键字:SQL 2个表 Server 连接 | 更新日期: 2023-09-27 18:29:44
怎么了,伙计们,我对这个代码有一些问题,我希望你们能弄清楚
我有两个表(客户和注册)使用SQL Server
客户
- Id
- 名称
- 等等
注册
- Id
- 日期
我正在处理我的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"不明确"有人能解决这个问题吗?感谢
select * from Ms_Register a join Ms_Coba b on a.id = b.id where id='" + textBox1.Text + "'"
应该是WHERE a.id
或WHERE 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子句