string sql = "select  * from a where tite like '%'@tite'%'";
        tsl aa = new tsl();
        DataSet ds = aa.ExecuteDataSet(sql, new OracleParameter(":TITLE", TextBox1.Text.Trim()));public DataSet ExecuteDataSet(string sql, params OracleParameter[] pms)
    {
        DataSet dt = new DataSet();
        using (OracleDataAdapter adapter = new OracleDataAdapter(sql, constr))
        {
            if (pms != null)
            {
                adapter.SelectCommand.Parameters.AddRange(pms);
            }
            adapter.Fill(dt);
        }
        return dt;
    }
上面那个算参数化吗?
还是下面这种SqlParameter parameter = new SqlParameter("@age", SqlDbType.Int);//有SqlDbType.Int)这个类型的才算?
parameter.Value = 30;
command.Parameters.Add(parameter);//添加参数 

解决方案 »

  1.   

    用 SqlParameter
      

  2.   

    .net 类库的参数化查询写法十分繁琐。我写了一个转换器,提供拼接字符串的写法,然后自动转换成参数化查询。迟点开源出来。
      

  3.   

     '%'@tite'%'
    这种直接异常吧……
    %是@title的内容,不是写在外面
      

  4.   

    应该不异常。只是写了也没用,根本不是作为参数而定义的sql语句。
      

  5.   

    --你的写法有问题, 需要改一下, 下面两种都可以:
    --1. @tite 包含 %
    select * from a where tite like @tite--2. @tite 不包含 %
    select * from a where tite like '%'+@tite+'%'
      

  6.   

    先撇开  '%'@tite'%' 这个的问题。
    其实1和2的两种写法效果应该是一致的。
    只是针对数据库不同,使用的参数化语法差异而已。