MySqlParameter 传参问题
GetList 方法一直获取不到数据,假如直接写sql可以查询到数据,个人怀疑是PrepareCommand 传参的时候没有跟sql字段关联起来,但是从网上找的demo都是这样传参的,求解决,急!!!
public DataSet GetList(string strWhere, string orderby, int page, int pageSize)
{//在哪
StringBuilder strSql = new StringBuilder();
strSql.Append("select MenuID,MenuName,MenuUrl,MenuIco,MenuFatherID,IsSubset,OrderbyCode,IsDisplay from menuinfo");
strSql.AppendFormat(" where ?strWhere");
strSql.Append(" order by ?orderby limit ?pagecount,?pagesize;");
strSql.AppendFormat("select count(*) from menuinfo where ?strWhere");
MySqlParameter[] parameters = {
new MySqlParameter("?strWhere", MySqlDbType.VarChar, 255),
new MySqlParameter("?orderby",MySqlDbType.VarChar,255),
new MySqlParameter("?pagecount",MySqlDbType.Int32,4),
new MySqlParameter("?pagesize",MySqlDbType.Int32,4)
};
parameters[0].Value = strWhere;
parameters[1].Value = orderby;
parameters[2].Value = (page - 1) * pageSize;
parameters[3].Value = pageSize;
DataSet ds = new DataSet();
ds = DbHelperMySQL.Query(strSql.ToString(), parameters);
return ds;
}
public static DataSet Query(string sql, MySqlParameter[] param)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand())
{
PrepareCommand(cmd, connection, null, sql, param);
using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
{
DataSet ds = new DataSet();
try
{
da.Fill(ds, "ds");
cmd.Parameters.Clear();
}
catch (MySqlException ex)
{
throw new Exception(ex.Message);
}
finally
{
cmd.Parameters.Clear();
cmd.Dispose();
connection.Close();
}
return ds;
}
}
}
}
private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, string cmdText, MySqlParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;//cmdType;
if (cmdParms != null)
{
foreach (MySqlParameter parameter in cmdParms)
{
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter.Value);
}
}
}
[最优解释]
?strWhere之类。。,参数可以写表达式吗(我好像没这么用过)?改成单个的值呢
[其他解释]
你的参数怎么都是 ?,应该是 @
strSql.AppendFormat(" where @strWhere");
MySqlParameter[] parameters = {
new MySqlParameter("@strWhere", MySqlDbType.VarChar, 255),
[其他解释]
大侠么 帮忙瞅瞅啊
[其他解释]