2016-10-26 178 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“; –