0
我工作的Windows應用程序使用Microsoft Access作爲數據庫與oldedb數據提供程序。 在這個項目中,我用來導入xml文件並將數據寫入數據庫。 我想做批量插入,而不是一次插入一條記錄。 所以我試着用DAO計算策略,但有時結束了像最佳實踐批量插入到Acces數據庫在c#
例外「目前鎖定無法更新」
這裏是我使用的代碼。
using TEST = Microsoft.Office.Interop.Access.Dao;
Pubic void Insert()
{
string sBaseDirectory = (AppDomain.CurrentDomain.BaseDirectory).ToString();
string sODBPath = sBaseDirectory + @"\TEST.accdb";
TEST.DBEngine dbEngine = new TESt.DBEngine();
TEST.Database db = dbEngine.OpenDatabase(sODBPath);
TEST.Recordset rsTest = db.OpenRecordset("dtTest");
for(int i=0;i<1000;i++)
{
rsTest.AddNew();
rsTest.Fields["ID"].Value =i;
rsTest.Fields["Name"].Value ="Test";
rsTest.update();
}
rsTest.close();
db.close();
}
隨着Oldedb:
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
string TableSQl = "Select * from dtTest where ID=0";
OleDbDataAdapter dataAdapter=new OleDbDataAdapter(TableSQl,ConnectionString);
dataAdapter.InsertCommand = new OleDbCommand(INSERT);
OleDbConnection OleConn = new OleDbConnection(ConnectionString);
for(int i=0;i<1000;i++)
{
dataAdapter.InsertCommand.Parameters.Add("ID", OleDbType.BigInt, 8,i.ToString());
dataAdapter.InsertCommand.Parameters.Add("Name", OleDbType.BigInt, 8, "test");
}
dataAdapter.InsertCommand.Connection = OleConn;
dataAdapter.InsertCommand.Connection.Open();
dataAdapter.update(dt);
dataAdapter.InsertCommand.Connection.Close();
這裏它不是在表中插入的記錄。
請指導這個代碼有什麼問題以及好的方法。
在第二個示例中,您添加了1000個名爲'Id'的參數和1000個名爲'Name'的參數。你不應該只添加參數一次,然後將記錄插入到DataTable中? – stuartd 2012-08-09 10:01:22
這僅僅是一個例子。最終我的意圖是如何一次插入1000條記錄。 – Ram 2012-08-10 09:45:45