我正在尝试创建两个datagridviews,用户将选择一行,然后使用SQL Inner连接填充第二个数据网格视图,以提供有关的更多信息。
我的问题是我收到设备附近的错误语法错误消息。
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
Properties.Settings.Default.SelectedCell = row.Cells[0].Value.ToString();
string SerialNumber = row.Cells[1].Value.ToString();
Child_Refresh();
}
}
private void Child_Refresh()
{
string Query = "Select *" +
"FROM Child" +
"Inner JOIN Device ON Child.DeviceID = Device.DeviceID" +
"WHERE Device.DeviceID = @DeviceID";
SqlConnection con = new SqlConnection("Data Source=LT-SDGFLD-1803;Initial Catalog=Test;Persist Security Info=True;User ID=sa;Password=");
SqlCommand cmd = new SqlCommand(Query, con);
try
{
cmd.Parameters.Add("@DeviceID", System.Data.SqlDbType.VarChar);
cmd.Parameters["@DeviceID"].Value = Properties.Settings.Default.SelectedCell;
con.Open();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView2.DataSource = dt;
con.Close();
}
catch (Exception ec)
{
MessageBox.Show(ec.Message);
}
}
答案 0 :(得分:2)
查询
string Query = "Select *" +
"FROM Child" +
"Inner JOIN Device ON Child.DeviceID = Device.DeviceID" +
"WHERE Device.DeviceID = @DeviceID";
结果进入
Select *FROM ChildInner JOIN Device ON Child.DeviceID = Device.DeviceIDWHERE Device.DeviceID = @DeviceID
且ChildInner
或Device.DeviceIDWHERE
语法无效。
所以你必须在行之间添加一个空格
string Query = "Select * " +
"FROM Child " +
"Inner JOIN Device ON Child.DeviceID = Device.DeviceID " +
"WHERE Device.DeviceID = @DeviceID";
或将其写入一行以获得更好的概述
string Query = "SELECT * FROM Child Inner JOIN Device ON Child.DeviceID = Device.DeviceID WHERE Device.DeviceID = @DeviceID";