我正在使用 Microsoft ODBC for Oracle 驱动程序成功连接到 Oracle 10g 数据库。
没有参数的常规查询工作正常,但参数化查询就好像没有传入参数一样。
例如
--this works fine
Select * from tbl1 where column1 = 'test'
--this doesn't
select * from tbl1 where column1 = ?
--odbc string parameter 'test'
这是我的连接字符串的样子:
"Driver={Microsoft ODBC for Oracle}; " & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=TCP)" & _
"(HOST=" & pstrServer & ")(PORT=" & pintPort.ToString & "))" & _
"(CONNECT_DATA=(SERVICE_NAME=" & pstrPhysicalName & "))); " & _
"uid=" & pstrUserName & ";pwd=" & pstrPassword & ";"
我正在像这样向我的 ODBC 命令添加参数:
arrOdbcParam(index) = New OdbcParameter("@paramName", paramValue)
...
cmd.Parameters.AddRange(arrOdbcParam)
请原谅部分复制的伪代码。
最佳答案
这里有点死灵法术,但由于我刚刚遇到类似的问题,这里是它如何与 Centura SQLBase 的 ODBC 驱动程序一起工作:
OdbcCommand com = con.CreateCommand();
com.CommandText = @"
SELECT thing
FROM table
WHERE searchInt = ? AND searchDat = ?";
com.Parameters.Add(new OdbcParameter("", OdbcType.Int)).Value = 12345;
com.Parameters.Add(new OdbcParameter("", OdbcType.DateTime)).Value = DateTime.Now;
OdbcDataReader reader = com.ExecuteReader();
这将在“表”中搜索“searchInt”中值为 12345 且“serachDat”中为今天的日期的记录。
注意事项:
?
在
SQL命令https://stackoverflow.com/questions/811481/