c#程序中想一次插入多条数据到oracle数据库中怎么实现

c#程序中想一次插入多条数据到oracle数据库中怎么实现,第1张

C#插入多条数据到oracle数据库:实例代码:using SystemData;using SystemDrawing;using SystemText;using SystemWindowsForms;using SystemIO;using SystemDataOleDb;using SystemData;using SystemDataOracleClient;using SystemText;namespace ExportInfo{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } /// <summary> /// 打开对话框 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { openFileDialog1Filter = "电子表格(xls)|xls"; openFileDialog1ShowDialog();//打开对话框 thistextBox1Text = openFileDialog1FileName;//得到文件=路径+名称 } /// <summary> /// 点击导入文件到数据库中 /// 代云超 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { try { DataSet ds = ImportExcel(thistextBox1Text);//将excel的对象先放到ds 中 if (ds != null) { if (dsTables[0]RowsCount > 0)//如果ds中是有值的话 执行下面的 *** 作 { if (ExportInfo(ds)) { MessageBoxShow("导入数据库成功!"); } else { MessageBoxShow("导入数据库失败!"); } } } } catch { MessageBoxShow("导入数据库失败 请检查导入文件是否填写正确!"); } } /// <summary> /// 导入文件的具体方法 /// 代云超 /// </summary> /// <param name="file">要导入的文件</param> /// <returns></returns> public static DataSet ImportExcel(string file) { FileInfo fileInfo = new FileInfo(file); if (!fileInfoExists) return null; string strConn = @"Provider=MicrosoftJetOLEDB40;Data Source=" + file + ";Extended Properties='Excel 80;HDR=NO;IMEX=1'"; OleDbConnection objConn = new OleDbConnection(strConn); DataSet dsExcel = new DataSet(); try { objConnOpen(); string strSql = "select from [Sheet1$]"; OleDbDataAdapter odbcExcelDataAdapter = new OleDbDataAdapter(strSql, objConn); odbcExcelDataAdapterFill(dsExcel); return dsExcel; } catch (Exception ex) { throw ex; } } /// <summary> /// 这是将ds对象导入数据库的方法 /// 代云超 /// </summary> /// <returns>执行是否成功 如: 成功=true 失败=false</returns> public static bool ExportInfo(DataSet ds) { if (ds != null) { if (dsTables[0]RowsCount > 0)//如果ds中是有值的话 执行下面的 *** 作 { return Do(ds);//执行成功 } } return false;//执行失败 } public static bool Do(DataSet ds) { OracleConnection conNorthwind = new OracleConnection("Data Source=web1;User Id=UserName;Password=UserPassword;Integrated Security=no;");//链接字符串 OracleCommand commandNorthwind = new OracleCommand(); try { conNorthwindOpen();//打开数据库链接 OracleTransaction tranNorthwind = conNorthwindBeginTransaction();//开始事务 for (int i = 0; i < dsTables[0]RowsCount; i++) { DataRow dr = dsTables[0]Rows[i]; OracleParameter[] parameters = null;//为了得到插入数据库的参数 定义参数对象 为空 string sql = GetSqlString(dr, out parameters);//执行sql -->用out关键字得到参数 赋到parameters对象上 //插入数据库中 PrepareCommand(commandNorthwind, conNorthwind, tranNorthwind, sql, parameters); commandNorthwindExecuteNonQuery();//执行 *** 作 } commandNorthwindTransactionCommit();//提交事务 conNorthwindClose();//关闭数据库链接资源 return true; } catch//如果有异常 不一定要捕捉异常 但要rollback事务 { if (commandNorthwindTransaction != null && conNorthwind != null) { commandNorthwindTransactionRollback();//rollback事务 conNorthwindClose();//关闭数据库链接 } return false; } } /// <summary> /// 每一行信息插入数据库中 /// </summary> /// <param name="dr">要插入的这一行ds-datarow对象</param> /// <returns>sql语句和用out关键字的参数数组对象</returns> public static string GetSqlString(DataRow dr, out OracleParameter[] parameters) { StringBuilder sb = new StringBuilder(); sbAppend("INSERT INTO TEXT VALUES(:ID,:NAME)"); parameters = new OracleParameter[] { new OracleParameter(":ID", ConvertToString(dr[0])), new OracleParameter(":NAME", ConvertToString(dr[1])) }; return sbToString();//将sqlreturn出去 } private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, string cmdText, OracleParameter[] cmdParms) { PrepareCommand(cmd, conn, trans, cmdText, CommandTypeText, cmdParms); } //参数设定 此方法被重载 private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, string cmdText, CommandType cmdType, OracleParameter[] cmdParms) { if (connState != ConnectionStateOpen) { connOpen(); } cmdConnection = conn; cmdCommandText = cmdText; if (trans != null) { cmdTransaction = trans; } cmdCommandType = cmdType; // CommandTypeText;//cmdType; if (cmdParms != null) { foreach (OracleParameter parameter in cmdParms) { if (parameter != null) { if (parameterValue == null) { parameterValue = DBNullValue; } cmdParametersAdd(parameter); } } } } }}

可以通过insert into …… as select 语句来进行实现。

sql:insert into tablename2( id,name) as select id ,name from tablename2 where 条件语句。

备注:以上语句中插入的字段顺序必须要和查询的语句的顺序保持一致,否则会报错,如果有条件语句的话,可以增加 where条件。

可以使用oracle sql loader批量导入数据:

生成测试数据的EXCEL文件,把EXCEL文件另存为CSV(逗号分隔)(csv),控制文件设置为用逗号分隔。

示例:

LOAD DATA

INFILE ‘d:\carcsv’

APPEND INTO TABLE t_car_temp

FIELDS TERMINATED BY ","

(phoneno,vip_car)

保存为inputctl

最后在命令行下输入:

C:\>sqlldr userid=system/manager

control=inputctl(在unix环境下亦同)

默认日志文件名为:inputlog

默认坏记录文件为:inputbad

按照如下方法:

1、先确保select语句的结果正确。

2、写如下语句,如将emp表中deptno为10的数据放入到新表emp_t中。

create table emp_t as select  from emp where deptno=10;

3、执行完毕后,emp_t表中的数据如下:

创建控制文件:

如,在D:\创建 zhaozhenlongctl 文件,文件内容为:

load data

infile 'd:\zhaozhenlongtxt'

append into table zhaozhenlong

fields terminated by ','

以上就是关于c#程序中想一次插入多条数据到oracle数据库中怎么实现全部的内容,包括:c#程序中想一次插入多条数据到oracle数据库中怎么实现、oracle数据库 批量将原有数据表中数据插入新表、mule 中怎么批量把这些数据插入Oracle数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9441416.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存