C#,如何将DataTable快速加载到accdb(access)的表中?
// 将DataTable快速加载到accdb的表中
public static void LoadDataTable2AccdbTable(DataTable dt_input, string accdbFilename, string accdbTableName, string password = null)
{
string connectionString = @"Provider= Microsoft.ACE.OLEDB.15.0;" + "Jet OLEDB:DataBase Password=" + PublicDataClass.password + "; Data Source=" + accdbFilename + ";";
//string sqlString = "SELECT * FROM "+accdbTableName +" where 1 =2";
string sqlString = "SELECT * FROM " + accdbTableName; // +" where 1 =2"; // 选择所有横断面数据
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
OleDbDataAdapter oleDap = new OleDbDataAdapter(sqlString, conn);
OleDbCommandBuilder builder = new OleDbCommandBuilder(oleDap);
//builder.QuotePrefix = "["; //可要可不要;
//builder.QuoteSuffix = "]";
//新建一个datatable,与数据库绑定; dt_input 没有开始的自动增加的id那一列
DataTable table_tmp = new DataTable(); //
oleDap.Fill(table_tmp);
// from dt_input to table_tmp;
for (int n = 0; n < dt_input.Rows.Count; n++)
{
DataRow row = table_tmp.NewRow();
for (int m = 0; m < dt_input.Columns.Count; m++)
{
row[m + 1] = dt_input.Rows[n][m].ToString();
}
table_tmp.Rows.Add(row);
}
oleDap.UpdateCommand = builder.GetUpdateCommand();
oleDap.Update(table_tmp); //用已经绑定的table_tmp更新accdb中的表
//return table1;
}