2016-10-26 115 views
-4

我正在從事個人項目,我想從我的數據庫中獲取客戶的信息。但是,我一直在失敗。 SQL命令我有:MySql命令更新C中的信息#

"SELECT * FROM `customer` WHERE `ID` [email protected]_ID AND `Naam` LIKE '" + tbKlantZoeken.Text + "'AND `E-mail` [email protected]_EMAIL AND `Telefoon` [email protected]_TEL" 

數據庫連接是否正常工作,並與數據庫相關的其他代碼工作以及。所以我想這是我的SQL代碼?如果不是,這是我的代碼,我使用它:

//Get info 

     db_connection(); 
     MySqlCommand cmdZoeken = new MySqlCommand(); 
     cmdZoeken.CommandText = "SELECT * FROM `customer` WHERE `ID` [email protected]_ID AND `Naam` LIKE '" + tbKlantZoeken.Text + "'AND `E-mail` [email protected]_EMAIL AND `Telefoon` [email protected]_TEL"; 
     cmdZoeken.Parameters.AddWithValue("@_ID", _ID); 
     cmdZoeken.Parameters.AddWithValue("@_EMAIL", _EMAIL); 
     cmdZoeken.Parameters.AddWithValue("@TEL", _TEL); 
     cmdZoeken.Connection = connect; 
     MySqlDataReader tbZoeken = cmdZoeken.ExecuteReader(); 
     if (tbZoeken.Read()) 
     { 
      connect.Close(); 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

其他部分:

//use code 

     db_connection(); 
     string _ID = "ID"; 
     string _EMAIL = "EMAIL"; 
     string _TEL = "TEL"; 
     try 
     { 
      bool Z = Klant_zoeken(_ID, _EMAIL, _TEL); 
      if (Z) 
      { 
       tbKResultaat.Text = _ID + " " + " " + _EMAIL + " " + _TEL; 
      } 
     } 
     catch 
     { 
      throw; 
     } 

在這一部分,當它失敗了,「扔」不藏漢工作。它只是崩潰,但我認爲這是另一個時間的問題...

在此先感謝!

+1

嘗試更改'cmdZoeken.Parameters.AddWithValue(「@ TEL」,_TEL );'to'cmdZoeken.Parameters.AddWithValue(「@_ TEL」,_TEL);' – Prisoner

+2

爲什麼除了'naam'外,其他的參數都使用?這是一個sql注入快樂和解析錯誤的可能來源。此外,如果您詢問有關您的代碼無法使用的幫助,請不要忘記告訴我們確切的錯誤消息。 – Steve

+0

@Steve我得到的錯誤是不相關的。問題是我不能得到我想要的信息。我將Tel更改爲_Tel,並停止發生錯誤,但仍然沒有任何信息 – Tjazz

回答

1

請選擇這個: - 你在一些單詞之間缺少空格。還可以根據您的要求添加%mark。除非用作Naam` = tbKlantZoeken.Text沒有像

"SELECT * FROM `customer` WHERE `ID` [email protected]_ID AND `Naam` LIKE '" + 
tbKlantZoeken.Text + "' AND `E-mail` [email protected]_EMAIL AND `Telefoon` [email protected]_TEL"; 
+0

這解決了未連接的錯誤,但文本框中仍然沒有任何信息。 – Tjazz

+0

請檢查你的sql查詢。正如我所說,請使用正確的方式 –

0

試試這個 /獲取信息

db_connection(); 
    MySqlCommand cmdZoeken = new MySqlCommand(); 
    cmdZoeken.CommandText = "SELECT * FROM customer WHERE ID [email protected]_ID AND Naam LIKE '" + tbKlantZoeken.Text + "%'AND E-mail [email protected]_EMAIL AND Telefoon [email protected]_TEL"; 
    cmdZoeken.Parameters.AddWithValue("@_ID", _ID); 
    cmdZoeken.Parameters.AddWithValue("@_EMAIL", _EMAIL); 
    cmdZoeken.Parameters.AddWithValue("@TEL", _TEL); 
    cmdZoeken.Connection = connect; 
    MySqlDataReader tbZoeken = cmdZoeken.ExecuteReader(); 
    if (tbZoeken.Read()) 
    { 
     connect.Close(); 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 
0

您應該刪除從表名和Column_name-

單quates

嘗試這樣的select語句 -

cmdZoeken.CommandText = "SELECT * FROM customer WHERE ID [email protected]_ID AND Naam LIKE '%" + tbKlantZoeken.Text + "%'AND E-mail [email protected]_EMAIL AND Telefoon [email protected]_TEL"; 
+0

當我按照你的說法做時,它給了我這個錯誤:'where子句'中的未知列'E'。我猜這是電子郵件中的「E」? – Tjazz

+0

使用[電子郵件]代替電子郵件。 –

+0

這是正確的語法。請使用這個 cmdZoeken.CommandText =「SELECT * FROM customer WHERE ID = @ _ ID and Naam LIKE'%'+」+ tbKlantZoeken.Text +「+'%'AND [E-mail] = @ _Email和Telefoon = @ _TEL「; –