- 需求 : 使用sqlite数据库, 将文件A.db 中某张数据表的数据,备份到文件B.db中。
解决方案: - 使用dataTableUpdate。不推荐
- 可以使用事务进行批量处理。
目的: 避免手动拼接大量insert into sql语句,直接将dataTable 作为参数,实现批量插入。
主要代码逻辑,及调用方式如下。
//建表
string createSql = $"CREATE TABLE {
table}" +
"(EPC varchar(32),UID varchar(20),q_time varchar(8),flag INTEGER," +
" PRIMARY KEY(EPC, UID, q_time))";
SqlHelper.ExecuteNonQuery(createSql);
//insert 语句
string commandText = $"INSERT INTO {
table}(EPC,UID,q_time,flag)VALUES(@EPC,@UID,@q_time,@flag)";
SqlHelper.ExecuteMutliQuery(commandText, dt);
调用方法
public int ExecuteMutliQuery(string commandText, DataTable dtData)
{
int res = 0;
if (Conn.State == ConnectionState.Closed)
Conn.Open();
using (SQLiteTransaction dbTrans = Conn.BeginTransaction())
{
try
{
foreach (DataRow row in dtData.Rows)
{
res += ExecuteNonQuery(dbTrans, commandText, row.ItemArray);
}
dbTrans.Commit();
}
catch (Exception ex)
{
res = -1;
dbTrans.Rollback();
throw ex;
}
finally
{
//Conn.Close();
}
}
return res;
}
///调用方法
public int ExecuteNonQuery(SQLiteTransaction transaction, string commandText, params object[<