好吧,我正在使用SQLite,但当我开始执行非查询可能10k +命令[.sql文件].我发现它很慢,最多可能需要10分钟才能结束将信息添加到数据库中.
无论如何这是我的ExecuteNonQuery代码.
public int ExecuteNonQuery(string sql)
{
var cnn = new SQLiteConnection(_dbConnection);
cnn.Open();
var mycommand = new SQLiteCommand(cnn) {CommandText = sql};
int rowsUpdated = mycommand.ExecuteNonQuery();
cnn.Close();
return rowsUpdated;
}
Run Code Online (Sandbox Code Playgroud)
我希望有一种方法可以让它花费几秒钟才能完成.
使用SQLite的事情是,你有包裹插入,更新,删除事务中的命令,否则这将是痛苦而缓慢。您可以使用 .NET 数据提供程序中内置的事务支持来执行此操作,或者由于您正在读取 .sql 文件,因此您可以创建第一行begin transaction和最后一行commit transaction。无论哪种方式都应该有效。
如果您想在 .sql 文件中执行此操作,则它可能如下所示。
begin transaction;
insert into ...;
update ...;
delete ...;
commit transaction;
Run Code Online (Sandbox Code Playgroud)
或者如果你在代码中这样做,它看起来像这样。
public int ExecuteNonQuery(string sql)
{
var cnn = new SQLiteConnection(_dbConnection);
cnn.Open();
var transaction = cnn.BeginTransaction();
var mycommand = new SQLiteCommand(cnn) {CommandText = sql};
mycommand.Transaction = transaction;
int rowsUpdated = mycommand.ExecuteNonQuery();
transaction.Commit();
cnn.Close();
return rowsUpdated;
}
Run Code Online (Sandbox Code Playgroud)