如标题所述
表test
字段:ID,Namestring strSql = “select * from test where ID like '%@paramID%‘”;其中@paramID是一个参数,这样子不能够实现模糊匹配啊,查询的结果都是0.请问高手,如何在C#中实现对MySQL 语句的参数进行模糊匹配?
表test
字段:ID,Namestring strSql = “select * from test where ID like '%@paramID%‘”;其中@paramID是一个参数,这样子不能够实现模糊匹配啊,查询的结果都是0.请问高手,如何在C#中实现对MySQL 语句的参数进行模糊匹配?
->
string strSql = “select * from test where ID like '%"+@paramID+"%'”;
{
string strSql = “select * from test where ID like '%@paramID%‘”;
MySqlParameter param = new MySqlParameter("@paramID", strID); MySqlCommand sqlCmd = new MySqlCommand(strSql); MySqlDataAdapter dataAdapter = new MySqlDataAdapter(sqlCmd.CommandText, conn); dataAdapter.SelectCommand.Parameters.Add(param); DataTable objDT = new DataTable(); dataAdapter.Fill(objDT);}
大概的写一下,让大家更清楚我的意思。strID是从方法里传进来的。楼上那种写法,应该是paramID是从外面传进来的参数。但是我的paramID是在MySqlParameter里定义的,因为我要用到多个参数,所以要判断一下参数是否为空,不为空的才加进来而最终的参数是通过适配器加到sql语句中的
dataAdapter.SelectCommand.Parameters.Add(param);
所以建议用存储过程来写
存储过程中获得你的这个模糊参数例如你的存储过程中语句如下:
SET @SQLLIKE = x; -- x为存储过程的输入参数,即你的查询参数
SET @SQL = 'select * from test where ID like \'%?%\'';
PREPAER S FROM @SQL;
EXECUTE S USING @SQLLIKE;
DEALLOCATE PREPARE S;这样的就可以了
上面有一个我写错了
sql语句中的倒数第三行
PREPAER S FROM @SQL;应该是
PREPARE S FROM @SQL;
第一个单词写错了。
而且我这个sql语句是需要动态拼串的,就是说我页面上有多个TextBox,我需要判断他们是否有值,
然后按照输入的条件去拼那个sql语句,用存储过程可以动态拼吗?
string strSql = “select * from test where ID like @paramID”; MySqlParameter param = new MySqlParameter("@paramID", “%”+ strID + “%”);