【发布时间】:2014-06-03 11:05:53
【问题描述】:
首先我尝试使用以下代码
strQuery = @"SELECT PASSWORD FROM IBK_USERS where upper(user_id) =upper('" + UserPrefix + "')";
try
{
ocommand = new OracleCommand();
if (db.GetConnection().State == ConnectionState.Open)
{
ocommand.CommandText = strQuery;
ocommand.Connection = db.GetConnection();
odatareader = ocommand.ExecuteReader();
odatareader.Read();
最后我转换了上面的查询以防止像那样的 sql 注入
strQuery = @"SELECT PASSWORD FROM IBK_USERS where upper(user_id) =upper(:UserPrefix)";
try
{
ocommand = new OracleCommand();
if (db.GetConnection().State == ConnectionState.Open)
{
ocommand.CommandText = strQuery;
ocommand.Connection = db.GetConnection();
ocommand.Parameters.Add(":UserPrefix",OracleDbType.Varchar2,ParameterDirection.Input);
ocommand.Parameters[":UserPrefix"].Value = UserPrefix;
odatareader = ocommand.ExecuteReader();
但这不起作用
【问题讨论】:
-
定义“不工作”。你看到了什么意外的行为?什么错误信息?什么堆栈跟踪?
-
这不是 SQL 标签编程语言。代码 sn -p 不完整。
-
我认为不能在 oracle DB 的上层函数中设置参数
-
你打开连接了吗?此外,将函数应用到
WHERE中的字段会导致糟糕的性能,因为您会阻止数据库使用任何索引。如果要进行不区分大小写的查询,请应用正确的排序规则。 -
是的,当我使用第一个代码时,所有数据都是正确的..