Oracle利用构建DataTable分批量Insert或Update至数据库
2009-10-21 10:12
211 查看
通常用于从网页上获取多条记录的多个文本框的值(如GridView列中的文本框),对数据库中的表分批量做insert或update,示例代码如下:
public void MyInsert()
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlDataAdapter sd = new SqlDataAdapter();
sd.SelectCommand = new SqlCommand("select devid,data_time,data_value from CurrentTest", conn);
sd.InsertCommand = new SqlCommand("insert into CurrentTest (devid,data_time,data_value) values (@devid,@data_time,@data_value);", conn);
sd.InsertCommand.Parameters.Add("@devid", SqlDbType.Char, 18, "devid");
sd.InsertCommand.Parameters.Add("@data_time", SqlDbType.Char, 19, "data_time");
sd.InsertCommand.Parameters.Add("@data_value", SqlDbType.Int, 8, "data_value");
sd.InsertCommand.UpdatedRowSource = UpdateRowSource.None;
sd.UpdateBatchSize = 0;
DataSet dataset = new DataSet();
sd.Fill(dataset);
#region 这里构建DataTable
Random r = new Random(1000);
for (int i = 0; i < 100000; i++)
{
object[] row ={ "DEVID" + i, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), r.Next(1, 1000) };
dataset.Tables[0].Rows.Add(row);
if (i % 300 == 0)
{
//300条则构建DataTable,做更新操作
sd.Update(dataset.Tables[0]);
dataset.Tables[0].Clear();
}
}
#endregion
sd.Update(dataset.Tables[0]);
dataset.Tables[0].Clear();
sd.Dispose();
dataset.Dispose();
conn.Close();
}
}
public void MyInsert()
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlDataAdapter sd = new SqlDataAdapter();
sd.SelectCommand = new SqlCommand("select devid,data_time,data_value from CurrentTest", conn);
sd.InsertCommand = new SqlCommand("insert into CurrentTest (devid,data_time,data_value) values (@devid,@data_time,@data_value);", conn);
sd.InsertCommand.Parameters.Add("@devid", SqlDbType.Char, 18, "devid");
sd.InsertCommand.Parameters.Add("@data_time", SqlDbType.Char, 19, "data_time");
sd.InsertCommand.Parameters.Add("@data_value", SqlDbType.Int, 8, "data_value");
sd.InsertCommand.UpdatedRowSource = UpdateRowSource.None;
sd.UpdateBatchSize = 0;
DataSet dataset = new DataSet();
sd.Fill(dataset);
#region 这里构建DataTable
Random r = new Random(1000);
for (int i = 0; i < 100000; i++)
{
object[] row ={ "DEVID" + i, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), r.Next(1, 1000) };
dataset.Tables[0].Rows.Add(row);
if (i % 300 == 0)
{
//300条则构建DataTable,做更新操作
sd.Update(dataset.Tables[0]);
dataset.Tables[0].Clear();
}
}
#endregion
sd.Update(dataset.Tables[0]);
dataset.Tables[0].Clear();
sd.Dispose();
dataset.Dispose();
conn.Close();
}
}
相关文章推荐
- 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的差别,sql文件导入
- 利用 Oracle 数据库 10g、Oracle Discoverer 和 Oracle Portal 构建 BI 信息板
- oracle 存储过程 利用数组类型type实现批量插入数据库
- 利用DataTable 批量写入到数据库
- 当要在 Oracle 中之心批量 INSERT、UPDATE 和 DELETE 操作时,可以使用 FORALL 语句。比for loop效率高
- 数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例
- 数据库--MyBatis的(insert,update,delete)三种批量操作
- 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的区别,sql文件导入
- 我想操作的是利用SqlDataAdapter的几个Command属性(InsertCommand,UpdateCommand,DeleteCommand)来更新数据库
- 数据库--MyBatis的(insert,update,delete)三种批量操作
- ORACLE 大数据批量更新 MERGE INTO 代替 UPDATE/INSERT INTO 提升性能
- 数据库--MyBatis的(insert,update,delete)三种批量操作
- Oracle利用存储过程批量insert造数据和分批提交删除的例子
- oracle 利用bulk collect into 批量insert
- 使用jdbc进行多数据的批量插入数据库(Oracle)
- 利用bat批处理,批量导入oracle的dmp格式的备份文件
- 批量insert and update
- 利用android提高的的insert,query,update,deleteAPI与execSql,rawQuery函数执行原生的插入,查询,更新,删除语
- oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert
- mergr into 在oracle中替代insert或update