首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

将datatable一次插入access,怎么搞

2013-11-27 
将datatable一次插入access,如何搞?1 SqlBulkCopy 只有sql才可用的2 本想将多个insert语句 拼在一起执行,

将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;
                    }
                }


[解决办法]
本帖最后由 net_lover 于 2012-05-21 15:54:17 编辑 多字段,我给你的例子中都有了啊,你都不看也没办法了。测试代码

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);

热点排行