2017-09-15 69 views
-2

我想創建兩個datagridviews用戶將選擇一行,然後使用SQL內部聯接來填充第二個datagrid視圖以提供更多信息。C#Winforms選擇在哪裏查詢使用Datagridview選擇

我的問題是,我得到錯誤消息不正確的語法附近設備。

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

@fubo我更新了我的問題的任擇議定書。我太急於發佈 – imamage597

回答

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