【发布时间】:2015-01-13 18:09:05
【问题描述】:
好吧..我真的找不到问题,所以我在这里发帖。附言我是 MSSQL 的新手,所以请温柔 xD
我得到不明确的列名“名称”
我有两张表:Cardiology 和 Cardio_Schedule。我想从两者中选择一些列并将它们显示为网格视图中的结果。我已经查询了..是这样的:
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();
IDK 是什么问题。 我确实用 ON 尝试过,但它在“ON”附近说语法不正确。任何形式的帮助将不胜感激。 谢谢!
【问题讨论】:
-
在
AND Name = '"中添加一个TheTableName.限定符到Name,就像在SELECT列表中一样。 -
你应该参数化这个,在
TextBox1.Text中添加一个',看看当你运行查询时会发生什么 -
也使用
INNER JOIN ... ON而不是CROSS JOIN ... WHERE。语义相同,但更容易理解。 -
如果你真的很害怕,把
' --输入你的文本框看看会发生什么。 -
非常感谢@AlexK。你能把它作为一个正确的答案,以便我可以选择它作为答案吗?再次感谢!
标签: c# asp.net sql-server