C#Winforms使用Datagridview Selection选择Where查询

时间:2017-09-15 12:39:07

标签: c# mysql winforms datagridview

我正在尝试创建两个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);
    }
}

1 个答案:

答案 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

ChildInnerDevice.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";