我以前的代码如下
一个条件上一个页面传过来的
string sqlcode = Session["sql"].ToString();

for(int x = 0;x < colBars;x++)
{
条件
 string temp1 = textRow[j,3];
 string temp2 = textCol[x,3];
 string sqlstr = "select sum(AMOUNT) from "+ table +" where "+ temp1 +" and "+ temp2 +"   
 and "+sqlcode+"";
}我将如果改成用参数化查询呢????参数化查询能提高查询速度吗?小弟在线等待!!!!谢谢!

解决方案 »

  1.   

    你的动态sql写成类似
    where a = :a and b = :b
    再赋值就可以了对经常用到查询语句用参数化查询能提高查询速度
      

  2.   

    java 和 C#有不同:假设有张表TEST (a number,  b varchar2(20) )Java:
    String sql="insert into TEST(a,b) values(?,?) ";
    PreparedStatement ps=connection.prepareStatement(sql);
    ps.setInt(1, 100);
    ps.setString(2, "abcde");
    ps.executeUpdate();C#:
    string sql="insert into TEST(a,b) values(:a,:b) ";
    OracleCommand myCommand = new OracleCommand(sql);
    myCommand.Parameters.Add("a", 100);
    myCommand.Parameters.Add("b", "abcde");
    myCommand.ExecuteNonQuery();如所见~ JAVA里使用?, 而C#(C语言)都是用 :变量名  来代表bind parameter
      

  3.   

    public DataSet conOracle(string sqlstr)
    {
    try
    {
    if (conn.State == ConnectionState.Closed)
    {
     conn.Open();
    }
    ds = new DataSet();
    cmd.CommandText=sqlstr;
    oda = new OracleDataAdapter(sqlstr,conn);
    OracleCommandBuilder cb = new OracleCommandBuilder(oda);
    oda.Fill(ds,"queryname");
    }
    catch(Exception ee)
    {
    Console.Write(ee.Message); 
    }
    finally
    {
    conn.Close(); 
    }
    return ds;
    }