[小白求教]c# System.Data.OracleClient 如何批量插入数据
本帖最后由 qq_16664871 于 2014-10-29 17:00:37 编辑
如题,听说可以用SQL拼接语句的方式,但是没找到。。。
ConnString = GetConnString();
OracleConnection connection = new OracleConnection(ConnString);
connection.Open();
string sql = "insert into \"CLIDB\" (ID_,DEVCODE,KKMC,CDMC,KKBH) values (auto_ID.nextval,:DEVCODE,:KKMC,:CDMC,:KKBH)";
String sqlinsert = sql;
OracleCommand oracleCommand = getoracleCommand(sqlinsert, connection);
OracleParameter[] para =
{
new OracleParameter ("DEVCODE", OracleType.VarChar,125),
new OracleParameter (":KKMC", OracleType.VarChar ,255),
new OracleParameter ("CDMC", OracleType.VarChar,255),
new OracleParameter ("KKBH", OracleType.VarChar,20),
new OracleParameter ("FXLX", OracleType.VarChar,20)
};
para[0].Value = Info.devcode;
para[1].Value = Info.kkmc;
para[2].Value = Info.cdmc;
para[3].Value = Info.kkbh;
para[4].Value = Info.fxlx;
for (int i = 0; i
{
oracleCommand.Parameters.Add(para[i]);
}
getoracleInsert(oracleCommand);
///
/// 插入Oracle数据
///
///
private static bool intoScc = false;
public static void getoracleInsert(OracleCommand oracleCommand)
{
try
{
oracleCommand.ExecuteNonQuery();
intoScc = true;
}
catch (Exception ex)
{
intoScc = false;
String message = ex.Message;
WriteMessage("插入数据失败了!" + message);
}
}
求助各界豪杰能手,
谢谢!!!
------解决思路----------------------
所谓的拼接就是insert into a(......) values (......);insert into a(......) values (......);insert into a(......) values (......)把这个作为sql来执行。
------解决思路----------------------
引用:我现在写的这个参数化拼接就是这样拼的 但是只能一条一条写入
在 info 里面有很多数据 一条一条
我想让在插入前做判断 满足500条时候一次插入,不满足500条有多少插进去多少
insert into a(......) values (......);insert into a(......) values (......);insert into a(......) values (......)做为一句sql执行,不是一句句分开执行,我没试过OracleParameter参数是不是上限,如果有另当别论
------解决思路----------------------
这两种用法一样,关键在于你生成OracleCommand的方式,别用:DEVCODE,采用,:DEVCODE1,,:DEVCODE2累加下去,但你第一列是自增序列,所以我也无法确定同一句sql中多次使用auto_ID.nextval是不是有自增效果,还得靠你自己尝试
------解决思路----------------------
引用:按照我代码里面的 给我些几句 sql 吧 我还是有点不太懂 怎么写 采用,:DEVCODE1,,:DEVCODE2累加下去,我要写500句啊。。。我只是贴出来一部分sql 实际参数20多个呢 。。。。
INSERT INTO CLIDB (ID_,DEVCODE,KKMC,CDMC,KKBH)
select auto_ID.nextval,:DEVCODE1,:KKMC1,:CDMC1,:KKBH1 from dual union all
select auto_ID.nextval,:DEVCODE2,:KKMC2,:CDMC2,:KKBH2 from dual union all
select auto_ID.nextval,:DEVCODE3,:KKMC3,:CDMC3,:KKBH3 from dual union all
......
就是这样,唯一不能确定的是auto_ID.nextval,这你得自己试一下