如何解决MySQL致命错误?C# 前端
本文关键字:致命错误 前端 MySQL 何解决 解决 | 更新日期: 2023-09-27 18:30:23
我正在构建一个Web表单,以便我能够使用select语句在mysql数据库中进行搜索。
我有两个文本框 - "用户ID"和"患者移动"和一个提交按钮。按下提交按钮时,将执行以下代码:
protected void submit_Click(object sender, EventArgs e)
{
{
try
{
List<string> wheres = new List<string>();
List<MySqlParameter> parameters = new List<MySqlParameter>();
if (!string.IsNullOrWhiteSpace(PatientMobile.Text))
{
wheres.Add("PHONE_NUMBER = @PatientMob");
parameters.Add(new MySqlParameter("@PatientMob", MySqlDbType.VarChar)
{
Value = PatientMobile.Text
});
}
if (!string.IsNullOrWhiteSpace(UserID.Text))
{
wheres.Add("USER_ID = @UserID");
parameters.Add(new MySqlParameter("@UserID", MySqlDbType.VarChar)
{
Value = UserID.Text
});
}
string query = string.Format("SELECT * FROM MESSAGE WHERE {0}", string.Join(" AND ", wheres));
conn.Open();
MySqlCommand cmd = new MySqlCommand(query, conn);
MySqlDataAdapter adp = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds);
grvCustomers.DataSource = ds;
grvCustomers.DataBind();
lbltotalcount.Text = grvCustomers.Rows.Count.ToString();
}
catch (MySqlException ex)
{
ShowMessage(ex.Message);
}
finally
{
conn.Close();
}
}
}
一切对我来说看起来都很好,但是当我运行它时,我收到一个致命的错误。
如果我替换:
if (!string.IsNullOrWhiteSpace(PatientMobile.Text))
{
wheres.Add("PHONE_NUMBER = @PatientMob");
跟
if (!string.IsNullOrWhiteSpace(PatientMobile.Text))
{
wheres.Add("PHONE_NUMBER = 12345");
它运行良好。仅当查询包含@PatientMob时,它似乎才不起作用。
我在wireshark中对此进行了调查,似乎它甚至没有将选择语句传递给mysql服务器。 如果我删除参数并将其替换为文本值(如上所示),它将出现在 wireshark 中并正确检索结果。
我添加了一个 MessageBox.Show(query);所以我可以在运行之前看到格式化的查询,并且它看起来格式正确。
有什么想法吗?
我想通了。现在我看得很明显。我需要在创建查询字符串后添加参数,如下所示:
string query = string.Format("SELECT * FROM MESSAGE WHERE {0}", string.Join(" AND ", wheres));
conn.Open();
MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.Parameters.Add(new MySqlParameter(@"PatientMob", MySqlDbType.VarChar)).Value = PatientMobile.Text;
cmd.Parameters.Add(new MySqlParameter(@"UserID", MySqlDbType.VarChar)).Value = UserID.Text;
现在工作正常!