您好我对MySQL很新,并尝试按照示例使用参数查询。
如果我只是放一个?在sql语句中代码可以工作,但我想知道如何传递多个 parms所以我试图使用命名参数。
然而我收到错误
[MySQL] [ODBC 5.1驱动程序] [mysqld-5.1.73-log]'where子句'中的未知列'56case_id'
/t3.asp,第32行
你会看到我尝试过的其他几种方法没有成功
并且帮助会很棒
我的代码是......
Set connContent = Server.CreateObject("ADODB.Connection")
connContent.ConnectionString=.....
connContent.Open
Set cmdContent = Server.CreateObject("ADODB.Command")
Set cmdContent.ActiveConnection = connContent
Set rs = Server.CreateObject("ADODB.Recordset")
cmdContent.Prepared = True
Const ad_varChar = 200
Const ad_ParamInput = 1
Const ad_Integer = 3
Const ad_DBDate = 133
Const ad_DBTimeStamp = 135
'theNumber = 23
'theText = "Hello there!"
'theDate = "2011-10-15"
case_id=56
SQL = " select * from tbl_cases where case_id > ?case_id; "
Set newParameter = cmdContent.CreateParameter("?case_id", ad_Integer, ad_ParamInput, 50, case_id)
cmdContent.Parameters.Append newParameter
'cmdContent.Parameters.Add(new MySqlParameter("case_id",case_id));
'cmdContent.Parameters.AddWithValue ("@Case_id", 3);
cmdContent.CommandText = SQL
set rs=cmdContent.Execute
do until rs.eof
response.write rs.fields("case_id")
rs.movenext
loop
%>
答案 0 :(得分:1)
命名参数不可能但是多个?参数工作正常。这些?按照它们的创建顺序使用,因此保持代码组织良好真的是值得的。这是一个没有多余装饰的例子......你会看到我把cmd语句放在第一位,紧接着按照需要的顺序跟着参数 - 每一个都压缩成一行代码。
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open(connectionString)
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = conn
cmd.CommandText = "UPDATE metadata SET meta_key=?, meta_value=? WHERE meta_id=?;"
cmd.Parameters.Append cmd.CreateParameter("@meta_key", adVarChar, adParamInput, 255, meta_key)
cmd.Parameters.Append cmd.CreateParameter("@meta_value", adLongVarChar, adParamInput, len(meta_value), meta_value)
cmd.Parameters.Append cmd.CreateParameter("@meta_id", adInteger, adParamInput, 11, meta_id)
cmd.Execute rCount
response.write(rCount & " records affected")
conn.Close
答案 1 :(得分:0)
无法将命名参数与经典的asp / adodb
一起使用