C# 模棱两可的列名?
好吧,那么。。我真的找不到问题,所以我在这里发帖。另外,我是MSSQL新手,所以请温柔一点 我得到了模棱两可的列名 我有两张表:心脏病学和心脏病学。我想从两者中选择一些列,并在gridview中显示它们作为结果。我提出了一个问题。。事实就是这样:C# 模棱两可的列名?,c#,asp.net,sql-server,C#,Asp.net,Sql Server,好吧,那么。。我真的找不到问题,所以我在这里发帖。另外,我是MSSQL新手,所以请温柔一点 我得到了模棱两可的列名 我有两张表:心脏病学和心脏病学。我想从两者中选择一些列,并在gridview中显示它们作为结果。我提出了一个问题。。事实就是这样: string str = @" SELECT Cardiology.CID, Cardiology.Name, Cardiology.Designation, Cardiology.Qualification,
string str = @"
SELECT Cardiology.CID,
Cardiology.Name,
Cardiology.Designation,
Cardiology.Qualification,
Cardiology.Shift,
Cardiology.Appointment_Timings,
Cardio_schedule.Ward_rounds,
Cardio_schedule.Slot1,
Cardio_schedule.Slot2,
Cardio_schedule.Slot3,
Cardio_schedule.Slot4,
Cardio_schedule.BreakTime,
Cardio_schedule.Slot5,
Cardio_schedule.Slot6,
Cardio_schedule.Slot7,
Cardio_schedule.Slot8
FROM Cardiology
CROSS JOIN Cardio_schedule
WHERE Cardiology.Name = Cardio_schedule.Name
AND Name = '" + TextBox1.Text + "'";
cmd = new SqlCommand(str, con);
con.Open();
SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adp.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
con.Close();
我知道问题是什么。
我确实尝试了ON,但它在“ON”附近说了不正确的语法。任何形式的帮助都将不胜感激。
谢谢 你在最后错过了
选择Cardiology.CID,
心脏病,
心脏病.名称,
心脏病学,资格,
心脏病,轮班,
心脏病,预约时间,
有氧运动时间表,病房查房,
有氧运动计划表1,
有氧运动计划表2,
有氧运动计划表3,
有氧运动计划表4,
有氧运动时间表,休息时间,
有氧运动计划表5,
有氧运动计划表6,
有氧运动计划表7,
有氧运动计划表8
从心脏病学
交叉连接有氧运动计划
其中Cardiology.NAME=Cardio_schedule.NAME
AND Cardiology.NAME='as'-'Cardiology'别名缺失
您的问题在过滤器中:-
AND Name = '" + TextBox1.Text + "'";
cmd = new SqlCommand(str, con);
根据要引用的表更改它:-
AND Cardiology.Name = '" + TextBox1.Text + "'";
cmd = new SqlCommand(str, con);
请注意,您的查询是为打开的,因此您应该使用参数化查询,如下所示:-
string str = "Cardiology.CID,Cardiology.Name, .....WHERE
Cardiology.Name = Cardio_schedule.Name
AND Cardiology.Name = @Name";
cmd = new SqlCommand(str, con);
cmd.Parameters.Add("@Name",DbType.NVarChar,20).Value = TextBox1.Text;
.....and so on
请注意,我认为您的数据类型为NVARCHA20,您需要相应地进行更改。在查询结束时,应该有:
WHERE Cardiology.Name = Cardio_schedule.Name AND Cardio_schedule.Name = '"
或
仅写入Name属性使其不明确。添加一个TableName。限定符toName in和Name='就像在选择列表中一样。您应该对此进行参数化,在TextBox1.Text中添加一个',然后查看运行查询时会发生什么,也可以使用内部联接。。。在上而不是交叉连接。。。哪里同样的语义,但更容易理解。如果你真的想害怕,在你的文本框中输入“-”,看看会发生什么。非常感谢@AlexK。你能不能把它作为一个正确的答案,这样我就可以选择它作为答案?再次感谢!非常感谢拉胡尔·辛格!谢谢,我知道了。谢谢你的帮助!谢谢,我知道了。谢谢你的帮助!
WHERE Cardiology.Name = Cardio_schedule.Name AND Cardiology.Name = '"