2016-10-26 8 views
-4

C#で情報を更新します。しかし、私は失敗し続けます。私が持っているSQLコマンド:mysqlコマンドは、私は私は私のデータベースから顧客の情報を取得したい個人的なプロジェクトに取り組んでいます

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

データベース接続は正常に機能していて、データベースに関連する別のコードがaswell取り組んでいます。だから私はそれが私の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; 
     } 

、それが失敗したときに、「スロー」はaswell動作しないされていない場合、ここで私はそれを使用する私のコードです。それだけでクラッシュし、しかし、私はそれは別の時間のための問題...事前に

おかげだと思います!これで

+1

'cmdZoeken.Parameters.AddWithValue(" @ TEL "、_TEL ); '' cmdZoeken.Parameters.AddWithValue( "@_ TEL"、_TEL)へ; ' – Prisoner

+2

は、なぜあなたは 'ナーム' 以外のすべてのパラメータを使用していますか?これはSQLインジェクションの喜びと解析エラーの原因となる可能性があります。あなたのコードが正常に機能していないことについて助けを求めるなら、正確なエラーメッセージを教えてください。 – Steve

+0

@ Steve私が得ているエラーは関係ありません。問題は、私が得たい情報を得ることができないということです。 Telを_Telに変更しましたが、エラーはなくなりましたが、まだ情報がありません – Tjazz

答えて

1

チェックイン: - あなたはいくつかの単語の間にスペースが不足しています。また、要件に応じて%マークをlikeに追加してください。以下のような

"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

plsはあなたにSQLクエリをチェックします。私が言ったようにplsを使用する適切な方法のように –

0

なしNaam` = tbKlantZoeken.Textとしての使用は、この /情報を見る

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

を試してみない限ります。table_nameと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顧客ID = @ _ IDとナームLIKE '%' +" + tbKlantZoeken.Text +「+ '%' AND [Eメール] = @ _電子メールやTelefoon = @を使用してください_TEL "; –

関連する問題