2016-02-22 61 views
0

這是我的代碼,但它給了我執行如何參數化MySQL查詢?

過程中遇到一個致命錯誤
private void recregtxt_TextChanged(object sender, EventArgs e) 
{ 
     if (recregcmb.Text == "Student ID") 
     { 
      MySqlDataAdapter sda = new MySqlDataAdapter("select StudID, LastName, FirstName, MiddleInitial, Address, Age, Birthday, Gender, Guardian, ContactNumber as 'Contact Number', Year as 'Year Level' from registeredTBL where StudID LIKE @key", conn); 
      DataTable data = new DataTable(); 
      sda.Fill(data); 
      dataGridView2.DataSource = data; 

      cmd.Parameters.AddWithValue("@key", recregtxt.Text + "%"); 
     } 
} 

誰能幫我解決這個問題吧。

回答

3

因爲您嘗試在之後添加參數名稱和值,請使用數據適配器執行該參數名稱。如果您執行之前應該添加

if (recregcmb.Text == "Student ID") 
{ 
    MySqlDataAdapter sda = new MySqlDataAdapter("select StudID, LastName, FirstName, MiddleInitial, Address, Age, Birthday, Gender, Guardian, ContactNumber as 'Contact Number', Year as 'Year Level' from registeredTBL where StudID LIKE @key", conn); 
    cmd.Parameters.AddWithValue("@key", recregtxt.Text + "%"); 
    DataTable data = new DataTable(); 
    sda.Fill(data); 
    dataGridView2.DataSource = data; 
} 

更多的東西;

順便說一下,在您的方法中有沒有cmd。在你的方法中定義你的命令和連接,同時處理它們的語句。

+1

'更多的東西;'讓你的回答完美...! –

+0

現在我在參數行中得到一個NullReferenceException錯誤。爲什麼會發生? – eilraK

+0

@AdrianRamos你仍然使用'AddWithValue'或者你改變了'Add'?你能不能顯示相關的行?調試你的代碼,看看'null'是什麼。你可以檢查:[什麼是NullReferenceException,以及如何修復它](http://stackoverflow.com/q/4660142/447156)。 –

1

什麼是你的代碼錯誤:

你就要成功了,但你正在執行的查詢,而無需添加參數值,命令執行後增加的參數值:

你必須做的:

添加參數值執行查詢之前,所以你片段就會像下面這樣:

if (recregcmb.Text == "Student ID") 
     { 
      MySqlDataAdapter sda = new MySqlDataAdapter("select StudID, LastName, FirstName, MiddleInitial, Address, Age, Birthday, Gender, Guardian, ContactNumber as 'Contact Number', Year as 'Year Level' from registeredTBL where StudID LIKE @key", conn); 
      cmd.Parameters.Add("@key", SqlDbType.VarChar).Value = recregtxt.Text + "%"; 
      DataTable data = new DataTable(); 
      sda.Fill(data); 
      dataGridView2.DataSource = data;     
     } 
0
  conn.Open(); 
      cmd = conn.CreateCommand(); 
      cmd.CommandText = "select StudID, LastName, FirstName, MiddleInitial, Address, Age, Birthday, Gender, Guardian, ContactNumber as 'Contact Number', Year as 'Year Level' from registeredTBL where StudID LIKE @key;"; 
      MySqlDataAdapter sda = new MySqlDataAdapter(cmd); 
      cmd.Parameters.AddWithValue("@key", recregtxt.Text + "%"); 
      DataTable data = new DataTable(); 
      sda.Fill(data); 
      dataGridView2.DataSource = data; 

我不知道爲什麼,但是這個代碼的工作,當我使用添加而不是AddWithValue,編譯器給了我關於無效的日期時間什麼錯誤,但感謝大家的幫助。