.net 必须声明标量变量 "@UserID"。 30

publicstaticDataSetQuery(stringSQLString,paramsOleDbParameter[]cmdParms){using(OleDbC... public static DataSet Query(string SQLString, params OleDbParameter[] cmdParms) { using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand cmd = new OleDbCommand(); PrepareCommand(cmd, connection, null, SQLString, cmdParms); using (OleDbDataAdapter da = new OleDbDataAdapter(cmd)) { DataSet ds = new DataSet(); try { da.Fill(ds, "ds"); cmd.Parameters.Clear(); } catch (OleDbException ex) { throw new Exception(ex.Message); } return ds; } }
}
private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, string cmdText, OleDbParameter[] 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 (OleDbParameter parameter in cmdParms) { if (parameter.Value == null) { parameter.Value = DBNull.Value; } cmd.Parameters.Add(parameter); } }
}
问题已解决,OleDb的参数用“问号”
展开
 我来答
校觅翠ji
2013-04-28
知道答主
回答量:4
采纳率:0%
帮助的人:3.6万
展开全部
问题出在OleDb和SqlClient 两种Sql参数占位符语法不一样,SqlClient用@代表参数
string str = "select * from user where UserID=@UserID"
而在OleDb中应写成
string str = "select * from user where UserID=?"

然后在OleDbParameter传参中new OleDbParameter[] { new OleDbParameter("@P1", OleDbType.Integer, 4) };
"@P1"代替的就是Sql语句中的参数
黄工的控件库
2013-03-26 · TA获得超过5732个赞
知道小有建树答主
回答量:1644
采纳率:50%
帮助的人:522万
展开全部
sql语句错误,将@UserID替换成值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bluewater_52d1
2013-03-26 · TA获得超过256个赞
知道小有建树答主
回答量:798
采纳率:0%
帮助的人:200万
展开全部
Query方法调用怎么写的?
追问
string str = "select * from user where UserID=@UserID"

OleDbParameter[] cmdParms = new OleDbParameter[] { new OleDbParameter("@UserID", OleDbType.Integer, 4) };
cmdParms[0].Value = UserID;
DataSet set = DbHelperOleDb.Query(str.ToString(), cmdParms);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友90df26f
2013-03-26 · TA获得超过814个赞
知道小有建树答主
回答量:457
采纳率:100%
帮助的人:166万
展开全部
你的数据访问层是在代码里面写的SQL 语句,还是在数据库中写的存储过程啊。如果是在数据库写的存储过程,那么你的存储过程中有没有声明这个变量啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
t1009lqy
2013-03-25 · 超过30用户采纳过TA的回答
知道答主
回答量:166
采纳率:66%
帮助的人:38.8万
展开全部
请检查sql语句或存储过程是否出错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式