将datatable一次插入access,如何搞?
1 SqlBulkCopy 只有sql才可用的
2 本想将多个insert语句 拼在一起执行,无奈access不支持
2 只有用 sqldataadapter.update(dataset,tablename); 这个了
代码如下,执行后未插入数据, 已知 dt中有数据的
OleDbDataAdapter adapt = new OleDbDataAdapter("select id,ItemGuid,StartTime from " + tableName, conn);
adapt.Fill(dt);
var cmd = new OleDbCommand("insert into " + tableName + "(ID,ItemGuid,StartTime) values(@id,@ItemGuid,@StartTime)", conn);
cmd.Parameters.Add("@Id", OleDbType.Integer, 4, "Id");
cmd.Parameters.Add("@ItemGuid", OleDbType.VarChar, 40, "itemGuid");
cmd.Parameters.Add("@StartTime", OleDbType.VarChar, 20, "StartTime");
adapt.InsertCommand = cmd;
if (dt != null)
{
try
{
adapt.Update(dt);
}
catch (Exception e)
{
return e.Message;
}
}
System.Data.DataTable dataTable1 = new System.Data.DataTable("TestTableXXXXXXXXXXXXXXXXXX");
System.Data.DataRow dr;
dataTable1.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));
dataTable1.Columns.Add(new System.Data.DataColumn("Title", typeof(System.String)));
dataTable1.Columns.Add(new System.Data.DataColumn("Description1", typeof(System.String)));
dataTable1.Columns.Add(new System.Data.DataColumn("Description2", typeof(System.String)));
dataTable1.Columns.Add(new System.Data.DataColumn("Description3", typeof(System.String)));
dataTable1.Columns.Add(new System.Data.DataColumn("Description4", typeof(System.String)));
dataTable1.Columns[0].AutoIncrement = true;
dataTable1.PrimaryKey = new System.Data.DataColumn[] { dataTable1.Columns["UserId"] };
//生成示例数据
for (int i = 0; i < 8; i++)
{
dr = dataTable1.NewRow();
dr["Title"] = "【孟子E章】" + i.ToString();
dr["Description1"] = "【1孟子E章】" + i.ToString();
dr["Description2"] = "【2孟子E章】" + i.ToString();
dr["Description3"] = "【3孟子E章】" + i.ToString();
dr["Description4"] = "【4孟子E章】" + i.ToString();
dataTable1.Rows.Add(dr);
}
String tableName = "TestTable";
String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
[解决办法]
DataDirectory
[解决办法]
aspxWeb.mdb;";
OleDbConnection conn = new OleDbConnection(connectionString);
OleDbDataAdapter adapt = new OleDbDataAdapter();
var cmd = new OleDbCommand("insert into " + tableName + "(id,ItemGuid,StartTime) values(@id,@ItemGuid,@StartTime)", conn);
cmd.Parameters.Add("@id", OleDbType.Integer, 40, "UserId");
cmd.Parameters.Add("@ItemGuid", OleDbType.VarChar, 40, "Title");
cmd.Parameters.Add("@StartTime", OleDbType.VarChar, 20, "Description3");
adapt.InsertCommand = cmd;
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapt);
builder.QuotePrefix = "[";
builder.QuoteSuffix = "]";
adapt.Update(dataTable1);