您的位置:首页 > 数据库 > Oracle

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐