Oracle中的Upper Function Input参数

时间:2014-06-03 08:29:11

标签: sql oracle

我尝试在SQL查询中阻止SQL注入。我使用以下代码来做,但不幸的是我遇到了一些问题。查询未在oracle DB中运行:

strQuery = @"SELECT PASSWORD FROM IBK_USERS where upper(user_id) =upper(:UserPrefix) AND user_suffix=:UserSufix AND STATUS_CODE='1'";
//strQuery = @"SELECT PASSWORD FROM IBK_CO_USERS where user_id = '" + UserPrefix + "' AND user_suffix='" + UserSufix + "' AND STATUS_CODE='1'";

try
{
    ocommand = new OracleCommand();
    if (db.GetConnection().State == ConnectionState.Open)
    {
        ocommand.CommandText = strQuery;
        ocommand.Connection = db.GetConnection();
        ocommand.Parameters.Add(":UserSufix", OracleDbType.Varchar2,ParameterDirection.Input);
        ocommand.Parameters[":UserSufix"].Value = UserSufix;
        ocommand.Parameters.Add(":UserPrefix", OracleDbType.Varchar2,ParameterDirection.Input);
        ocommand.Parameters[":UserPrefix"].Value = UserPrefix.ToUpper();
        odatareader = ocommand.ExecuteReader();
        odatareader.Read();
        if (odatareader.HasRows)
        {

1 个答案:

答案 0 :(得分:0)

您的参数不应包含分号:。这只是查询中的一个指示符,后面的变量是一个参数,但您不必在.NET端提供它:

ocommand.Parameters["UserSufix"] = ...