1、我用OLEDB做PROVIDER,用COMMAND提交INSERT语句,如何一次性把多条INSERT语句提交,每个语句用什么来分割,我尝试了 空格,回车,分号,都不行,错误提示无效语句或者语句没有结束;而这些语句在SQL中都可以的。
2、当我循环调用以下函数插入数据库的时候,数据一多,插入快了,就会报Ora-01000: 超出打开游标的最大数 ,后来我加上myConn.Open和myConn.Close后解决了这个错误信息,但是又出现了性能急剧下降。请问这个问题如何解决?
public bool Insert(string myInsertQuery )
{
OleDbCommand myOracleCommand=new OleDbCommand(myInsertQuery);
myOracleCommand.Connection = myConn;
myOracleCommand.ExecuteNonQuery();
return true;
}
3、开始的时候每次插入都要NEW一个COMMAND实例,但是后来我想是不是把COMMAND对象作为一个全局对象,在初始化时进行NEW了,然后在每次INSERT时用这个COMMAND。可是当我这样做后,发现速度比之前还慢了,而且经常卡死了。
4、我现在多个线程同时进行插入的操作,每个线程单独的COMMAND和CONNECTION对象,如果我把这两个对象作为多个线程共享的全局对象,这样是否会提高性能和速度呢?
5、ORACLE的存储过程能否用数组作为参数传递,这样我可以一此行提交很多记录,让ORACLE在存储过程里进行INSERT,这样 就可以减少数据库往返过程的消耗。不知道我这种想法是否可行。
6、用C#调用SQLLOAD应该怎么写,这种方法比我们自己去INSERT是否快很多?另外在SQLLOAD的CONTROL文件里怎么进行条件判断,比如某个字段为空时这个记录就不插入。
2、当我循环调用以下函数插入数据库的时候,数据一多,插入快了,就会报Ora-01000: 超出打开游标的最大数 ,后来我加上myConn.Open和myConn.Close后解决了这个错误信息,但是又出现了性能急剧下降。请问这个问题如何解决?
public bool Insert(string myInsertQuery )
{
OleDbCommand myOracleCommand=new OleDbCommand(myInsertQuery);
myOracleCommand.Connection = myConn;
myOracleCommand.ExecuteNonQuery();
return true;
}
3、开始的时候每次插入都要NEW一个COMMAND实例,但是后来我想是不是把COMMAND对象作为一个全局对象,在初始化时进行NEW了,然后在每次INSERT时用这个COMMAND。可是当我这样做后,发现速度比之前还慢了,而且经常卡死了。
4、我现在多个线程同时进行插入的操作,每个线程单独的COMMAND和CONNECTION对象,如果我把这两个对象作为多个线程共享的全局对象,这样是否会提高性能和速度呢?
5、ORACLE的存储过程能否用数组作为参数传递,这样我可以一此行提交很多记录,让ORACLE在存储过程里进行INSERT,这样 就可以减少数据库往返过程的消耗。不知道我这种想法是否可行。
6、用C#调用SQLLOAD应该怎么写,这种方法比我们自己去INSERT是否快很多?另外在SQLLOAD的CONTROL文件里怎么进行条件判断,比如某个字段为空时这个记录就不插入。
2 write to external database (csv files for example)
3 dispose your command and your connection as soon as possible
4 see above
5 see 2
6 http://www.cnblogs.com/binking/archive/2006/11/21/567587.html
TKS,but how to batch insert using stored procedure? andy sample code for me ,tks