一个很简单的操作,就是对一个表进行insert操作,一天估计有100万以下.在70万左右吧.我用的一个sql语句:sql = "insert into table (id,name,,....) value (1,'dd',...)";这样,然后
OracleConnection oc = new OracleConnection(constring); oc.Open();
OracleCommand ocom = new OracleCommand(sql, oc);
returnvalue = ocom.ExecuteNonQuery();
oc.Close();
oc.Dispose();这样子.然后不是还有一种这样利用写成参数形式的吗
OracleConnection con = new OracleConnection(constring);
con.Open(); OracleCommand cmd = new OracleCommand(sql, con);
cmd.CommandType = CommandType.Text;
OracleParameter p1 = new OracleParameter("id", OracleType.VarChar);
p1.Direction = System.Data.ParameterDirection.Input;
p1.Value = productid;
cmd.Parameters.Add(p1); ......
........ returnvalue = cmd.ExecuteNonQuery();
con.Close(); con.Dispose();我个人觉得第一种代码少,写的方便,第二种估计看的时候好看.但不太清楚在ORACle中执行时,会不会速度差别大,就是一个insert
这两种在ORACLE中执行有什么区别?那种速度快?
OracleConnection oc = new OracleConnection(constring); oc.Open();
OracleCommand ocom = new OracleCommand(sql, oc);
returnvalue = ocom.ExecuteNonQuery();
oc.Close();
oc.Dispose();这样子.然后不是还有一种这样利用写成参数形式的吗
OracleConnection con = new OracleConnection(constring);
con.Open(); OracleCommand cmd = new OracleCommand(sql, con);
cmd.CommandType = CommandType.Text;
OracleParameter p1 = new OracleParameter("id", OracleType.VarChar);
p1.Direction = System.Data.ParameterDirection.Input;
p1.Value = productid;
cmd.Parameters.Add(p1); ......
........ returnvalue = cmd.ExecuteNonQuery();
con.Close(); con.Dispose();我个人觉得第一种代码少,写的方便,第二种估计看的时候好看.但不太清楚在ORACle中执行时,会不会速度差别大,就是一个insert
这两种在ORACLE中执行有什么区别?那种速度快?
还有,为什么你写OracleConnection不喜欢用using呢?
在我看来第一句看上去会快速理解!
我们这儿有一个人说,在oracle中第一句,它执行时,每次都要重新编译,而第二种不用,所以会快,我没看出来.对oracle编译原理不太清楚,有这可能吗?
它快的原因,在于只解析一次,以后每次都不用解析。
而第一种方案,Oracle每次都得对sql语句进行再解析。这是需要时间的。同时,如上所述,存在着SQL注入的风险。
所以可能第二种方式会稍微好一些。这就是所谓绑定于不绑定的差别所在。
不过oracle还提供了批绑定的方式:bulk binds。
这个应该是最快的方法了。