[小白求教]c# System.Data.OracleClient 如何批量插入数据

qq_16664871 2014-10-29 04:57:57
如题,听说可以用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 < para.Length; i++)
{
oracleCommand.Parameters.Add(para[i]);
}
getoracleInsert(oracleCommand);

/// <summary>
/// 插入Oracle数据
/// </summary>
/// <param name="oracleCommand"></param>
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);
}

}

求助各界豪杰能手,
谢谢!!!
...全文
681 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdashewan 2014-10-30
  • 打赏
  • 举报
回复
引用 6 楼 qq_16664871 的回复:
按照我代码里面的 给我些几句 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,这你得自己试一下
qq_16664871 2014-10-30
  • 打赏
  • 举报
回复
可以了 加了一个触发器~
qq_16664871 2014-10-30
  • 打赏
  • 举报
回复
引用 7 楼 xdashewan 的回复:
[quote=引用 6 楼 qq_16664871 的回复:] 按照我代码里面的 给我些几句 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,这你得自己试一下[/quote] 自增列 在语句中报错,这可怎么办。。。
qq_16664871 2014-10-29
  • 打赏
  • 举报
回复
引用 5 楼 xdashewan 的回复:
这两种用法一样,关键在于你生成OracleCommand的方式,别用:DEVCODE,采用,:DEVCODE1,,:DEVCODE2累加下去,但你第一列是自增序列,所以我也无法确定同一句sql中多次使用auto_ID.nextval是不是有自增效果,还得靠你自己尝试
按照我代码里面的 给我些几句 sql 吧 我还是有点不太懂 怎么写 采用,:DEVCODE1,,:DEVCODE2累加下去,我要写500句啊。。。我只是贴出来一部分sql 实际参数20多个呢 。。。。
xdashewan 2014-10-29
  • 打赏
  • 举报
回复
这两种用法一样,关键在于你生成OracleCommand的方式,别用:DEVCODE,采用,:DEVCODE1,,:DEVCODE2累加下去,但你第一列是自增序列,所以我也无法确定同一句sql中多次使用auto_ID.nextval是不是有自增效果,还得靠你自己尝试
qq_16664871 2014-10-29
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
[quote=引用 2 楼 qq_16664871 的回复:] 我现在写的这个参数化拼接就是这样拼的 但是只能一条一条写入 在 info 里面有很多数据 一条一条 我想让在插入前做判断 满足500条时候一次插入,不满足500条有多少插进去多少
insert into a(......) values (......);insert into a(......) values (......);insert into a(......) values (......)做为一句sql执行,不是一句句分开执行,我没试过OracleParameter参数是不是上限,如果有另当别论[/quote] 这样插进去会重复数据吧, 有这样一种方法: INSERT INTO CLIDB (ID_,DEVCODE,KKMC,CDMC,KKBH) select 1................................................ from dual UNION select 2................................................. from dual 这种怎么用呢。。。
xdashewan 2014-10-29
  • 打赏
  • 举报
回复
引用 2 楼 qq_16664871 的回复:
我现在写的这个参数化拼接就是这样拼的 但是只能一条一条写入 在 info 里面有很多数据 一条一条 我想让在插入前做判断 满足500条时候一次插入,不满足500条有多少插进去多少
insert into a(......) values (......);insert into a(......) values (......);insert into a(......) values (......)做为一句sql执行,不是一句句分开执行,我没试过OracleParameter参数是不是上限,如果有另当别论
qq_16664871 2014-10-29
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
所谓的拼接就是insert into a(......) values (......);insert into a(......) values (......);insert into a(......) values (......)把这个作为sql来执行。
我现在写的这个参数化拼接就是这样拼的 但是只能一条一条写入 在 info 里面有很多数据 一条一条 我想让在插入前做判断 满足500条时候一次插入,不满足500条有多少插进去多少
xdashewan 2014-10-29
  • 打赏
  • 举报
回复
所谓的拼接就是insert into a(......) values (......);insert into a(......) values (......);insert into a(......) values (......)把这个作为sql来执行。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧