我现在从XML从服务器读取到很大批数据,要入到本地数据库,读取到的数据放在DataTable,DataTable的结构跟数据库里表结构完全一致,有数据库复制插入方法如:
insert into t1 select * from t2
这样就可以把t2表的数据全部复制到t1表,速度很快我现在DataTable想实现上面这个,因为数据量到,不考虑单条录入方式!
insert into t1 select * from t2
这样就可以把t2表的数据全部复制到t1表,速度很快我现在DataTable想实现上面这个,因为数据量到,不考虑单条录入方式!
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);
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) ...{
sd.Update(dataset.Tables[0]);
dataset.Tables[0].Clear();
}
}
sd.Update(dataset.Tables[0]);
dataset.Tables[0].Clear();
sd.Dispose();
dataset.Dispose();
conn.Close();
}
这样的语句用在t1,t2在同一个数据库中楼主从xml中读取的数据存在程序中的datatble中,要存到本地的数据库中,两张表在不同的数据库中,没法直接使用insert into t1 select * from t2如果要批量导入数据库,使用dataAdapter.update,避免使用大量的insert语句
2009-04-01 05:07using System;
using System.Data;
using System.Data.SqlClient;namespace program
{
class wangjun
{
static void Main(string[] args)
{
//创建连接数据库对象字符串
string connection = "server=.;database=wangjun;uid=sa;pwd=sqlserver";
//创建连接数据库对象
SqlConnection sc = new SqlConnection(connection);
//创建数据集对象
DataSet ds = new DataSet("wangjun");
//创建数据集中表对象,表名为person
DataTable dt = ds.Tables.Add("person");
//创建数据适配器对象,使用select * from student
SqlDataAdapter sda = new SqlDataAdapter("select * from student", sc);
//适配器对象使用Fill方法填充ds数据集的person表
sda.Fill(ds, "person");
//使用person表的格式,新建一个新行
DataRow r = ds.Tables["person"].NewRow();
//在行中插入数据
r["姓名"] = "大李";
r["性别"] = "男";
r["总分"] = 90;
r["平时成绩"] = 100;
r["address"] = "中国";
r["所属院系"] = "软件开发";
//将填写好的行加入person表中
ds.Tables["person"].Rows.Add(r);
//新建数据库命令对象
SqlCommand cmd = sc.CreateCommand();
//设置命令字符串
cmd.CommandText = "insert into student(姓名,性别,总分,平时成绩,address,所属院系) values(@name,@sex,@fen,@cheng,@address,@yuanxi)";
//添加命令对象的参数
cmd.Parameters.Add("@name",SqlDbType.Char,10,"姓名");
cmd.Parameters.Add("@sex",SqlDbType.Char,2,"性别");
cmd.Parameters.Add("@fen",SqlDbType.Int,4,"总分");
cmd.Parameters.Add("@cheng",SqlDbType.Int,4,"平时成绩");
cmd.Parameters.Add("@address",SqlDbType.Char,20,"address");
cmd.Parameters.Add("@yuanxi",SqlDbType.Char,20,"所属院系");
//设置数据适配器插入命令
sda.InsertCommand = cmd;
//对ds数据集的person表进行更新
sda.Update(ds.Tables[0]);
//清除ds数据集表的内容
ds.Tables[0].Clear();
//使用数据适配器填充ds表
sda.Fill(ds,"person");
}
}
}僅做參考
如何实现?多谢!
@"Server=.;Integrated Security=True;" +
"Database=northwind"); SqlDataAdapter thisAdapter = new SqlDataAdapter(
"SELECT CustomerID, CompanyName FROM Customers where 1=2", thisConnection); SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter); DataSet thisDataSet = new DataSet();
thisAdapter.Fill(thisDataSet, "Customers");
DataRow thisRow = thisDataSet.Tables["Customers"].NewRow();
thisRow["CustomerID"] = "ZAZI";
thisRow["CompanyName"] = "Zachary Zithd.";
thisDataSet.Tables["Customers"].Rows.Add(thisRow);
thisAdapter.Update(thisDataSet, "Customers"); thisConnection.Close();
严禁加多群,群定期清理长期不发言不讨论的朋友,请多包涵。