【发布时间】:2014-11-10 05:07:26
【问题描述】:
我对 c# 和 SQL 还是很陌生,所以请记住这一点。我搜索了该网站,但找不到答案。
我正在用 C# 构建一个基本的 ASP Web 表单,它连接到 mysql 数据库并使用结果填充 gridview。
我在网页上有两个文本框:电话号码和用户 ID。 然后我有一个按钮,单击该按钮会运行以下代码:
protected void btnSubmit_Click(object sender, EventArgs e)
{
{
try
{
conn.Open();
//SQL
MySqlCommand cmd = new MySqlCommand("Select * from message where phone_number like @PatientMob and user_ID like @UserID, conn);
//Paramaters
cmd.Parameters.Add(new MySqlParameter(@"PatientMob", MySqlDbType.VarChar)).Value = PatientMobile.Text;
cmd.Parameters.Add(new MySqlParameter(@"UserID", MySqlDbType.VarChar)).Value = UserID.Text;
MySqlDataAdapter adp = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds);
gridview.DataSource = ds;
..等
我的问题是,如何格式化查询,以便即使只填写一个文本框也能正常工作? 目前,如果我输入电话号码但不输入用户 ID,结果会显示具有该电话号码的人在用户 ID 字段中没有输入任何内容。
我稍后会为标题、名字、姓氏等添加更多文本框,并且需要一个可以处理已填写或未填写字段的任意组合的解决方案。
谢谢。
【问题讨论】:
-
使用 Equalto(=) 运算符代替 LIKE 运算符。
-
另外,在 cmd.add 参数的末尾,使用 string.IsNullOrEmpty(PatientMobile.Text) ? DBNull.Value : PatientMobile.Text;