将DataTable插入数据库

网上搜索了下。找到了两种方法,可以将整个DATATABLE写入数据库,字段需对应,数据库的自增ID赋值null即可

第一种

[csharp]  view plain copy print ?
  1. 使用sqlbulkcopy.writetoserver(datatable)  
  2. SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction);  
  3. sqlbulkcopy.DestinationTableName = "Table_1";//数据库中的表名  
  4. sqlbulkcopy.WriteToServer(dataset.Tables[0]);  

第二种

[csharp]  view plain copy print ?
  1. 使用sqlcommand.executenonquery()方法插入  
  2. foreach (DataRow datarow in datatable.Rows)  
  3. {  
  4. string sql = "INSERT INTO [Table_1]  
  5. ([CompanyName],[CompanyCode],[Address],[Owner],[Memo])" +  
  6. "VALUES('" + datarow["CompanyName"].ToString() + "'" +  
  7. ",'" + datarow["CompanyCode"].ToString() + "'" +  
  8. ",'" + datarow["Address"].ToString() + "'" +  
  9. ",'" + datarow["Owner"].ToString() + "'" +  
  10. ",'" + datarow["Memo"].ToString() + "')";  
  11. using (SqlConnection sqlconn = new SqlConnection(connectionString))  
  12. {  
  13.       sqlconn.Open();  
  14.       SqlCommand sqlcommand = new SqlCommand(sql, sqlconn);  
  15.       sqlcommand.ExecuteNonQuery();  
  16.       sqlconn.Close();  
  17. }  
  18. }  
  19. 使用sqldataadapter.update(dataset,tablename);  
  20. SqlCommand insertcommand = new SqlCommand("INSERT INTO [Table_1]([CompanyName],[CompanyCode],[Address],[Owner],[Memo])" +  
  21. "VALUES(@CompanyName, @CompanyCode,@Address,@Owner,@Memo)",new SqlConnection(connectionString));  
  22. insertcommand.Parameters.Add("@CompanyName", SqlDbType.NChar, 50, "CompanyName");  
  23. insertcommand.Parameters.Add("@CompanyCode", SqlDbType.NChar, 25, "CompanyCode");  
  24. insertcommand.Parameters.Add("@Address", SqlDbType.NChar, 255, "Address");  
  25. insertcommand.Parameters.Add("@Owner", SqlDbType.NChar, 25, "Owner");  
  26. insertcommand.Parameters.Add("@Memo", SqlDbType.NChar, 255, "Memo");  
  27. sqldataadapter.InsertCommand = insertcommand;  
  28. sqldataadapter.Update(dataset, "Table_1");  
  29. 使用sqlbulkcopy.writetoserver(datatable)  
  30. SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction);  
  31. sqlbulkcopy.DestinationTableName = "Table_1";//数据库中的表名  
  32. sqlbulkcopy.WriteToServer(dataset.Tables[0]);  
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在将DataTable中的时间格式数据插入到Oracle数据库时,需要注意以下几点: 1. 确保DataTable中的时间格式与Oracle数据库中的时间格式匹配。 2. 将时间格式转换为Oracle数据库中支持的时间格式。例如,Oracle数据库中常用的时间格式为“YYYY-MM-DD HH24:MI:SS”。 3. 使用OracleDataAdapter和OracleCommand对象进行数据插入操作。在将数据插入到Oracle数据库中时,应该使用参数化查询,以避免SQL注入和其他安全问题。 下面是一个示例代码,演示如何将DataTable中的数据插入到Oracle数据库中: ```csharp using System.Data; using Oracle.ManagedDataAccess.Client; // 假设DataTable中有一个名为“myTable”的表格,其中包含一个名为“myDate”的列,其数据类型为DateTime。 DataTable myTable = new DataTable(); // 填充DataTable的代码... // 建立与Oracle数据库的连接 string connectionString = "Data Source=<dataSource>; User ID=<userId>; Password=<password>"; using (OracleConnection connection = new OracleConnection(connectionString)) { connection.Open(); // 创建OracleDataAdapter对象 OracleDataAdapter adapter = new OracleDataAdapter(); // 创建INSERT命令 adapter.InsertCommand = new OracleCommand("INSERT INTO myTable (myDate) VALUES (:myDate)", connection); // 添加参数 adapter.InsertCommand.Parameters.Add(":myDate", OracleDbType.Date); // 遍历DataTable中的每一行,将数据插入到Oracle数据库中 foreach (DataRow row in myTable.Rows) { // 将时间格式转换为Oracle数据库中支持的时间格式 DateTime dateValue = (DateTime)row["myDate"]; string oracleDateValue = dateValue.ToString("yyyy-MM-dd HH:mm:ss"); // 设置参数值 adapter.InsertCommand.Parameters[":myDate"].Value = oracleDateValue; // 执行INSERT命令 adapter.InsertCommand.ExecuteNonQuery(); } } ``` 请注意,以上示例代码仅供参考,实际应用时需要根据具体情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值