【发布时间】:2016-10-26 07:56:13
【问题描述】:
我正在从事一个个人项目,我想从我的数据库中获取客户的信息。但是,我一直失败。我有的sql命令:
"SELECT * FROM `customer` WHERE `ID` =@_ID AND `Naam` LIKE '" + tbKlantZoeken.Text + "'AND `E-mail` =@_EMAIL AND `Telefoon` =@_TEL"
数据库连接正常,与数据库相关的另一个代码也在正常工作。所以我猜这是我的sql代码?如果没有,这是我使用它的代码:
//Get info
db_connection();
MySqlCommand cmdZoeken = new MySqlCommand();
cmdZoeken.CommandText = "SELECT * FROM `customer` WHERE `ID` =@_ID AND `Naam` LIKE '" + tbKlantZoeken.Text + "'AND `E-mail` =@_EMAIL AND `Telefoon` =@_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;
}
在这部分,当它失败时,“抛出”也不起作用。它只是崩溃了,但我认为这是另一个问题......
提前致谢!
【问题讨论】:
-
尝试将
cmdZoeken.Parameters.AddWithValue("@TEL", _TEL);改为cmdZoeken.Parameters.AddWithValue("@_TEL", _TEL); -
为什么除了“naam”之外的所有东西都使用参数?这是一个 sql 注入的乐趣和解析错误的可能来源。此外,如果您就代码无法正常工作而寻求帮助,请不要忘记告诉我们确切的错误消息。
-
@Steve 我得到的错误不相关。问题是我无法获得我想要获得的信息。我将 Tel 更改为 _Tel,并停止收到错误,但仍然没有信息
-
@Alex 谢谢!它阻止了它崩溃,所以我猜它有效吗?但主要问题仍然存在:它仍然没有显示任何信息
-
您希望看到什么信息?您不会将 Reader 用于任何事情,而只是检查该行是否存在。