是否有一些手册描述了SqliteCommand
的使用频率。什么是需要避免的情况?
包含许多功能的代码有什么危险?
private void UpgradeDataBaseEmptyColumn()
{
var connection = GetConnection();
{
AddColumnIsEmpty(connection);
Thread t = new Thread(() =>
{
ProcessIsEmptyColumn(connection);
});
t.IsBackground = true;
t.Start();
}
}
功能AddColumnIsEmpty
private void AddColumnIsEmpty(SQLiteConnection connection)
{
using (SQLiteCommand command = new SQLiteCommand(connection))
{
//SOmething done
}
}
功能ProcessIsEmptyColumn
public void ProcessIsEmptyColumn(SQLiteConnection connection)
{
using (SQLiteCommand command = new SQLiteCommand(connection))
{
foreach (var item in getEmptyItemsNotUpdated(connection))
{
using (SQLiteTransaction transaction = connection.BeginTransaction())
{
//Something doe
transaction.Commit();
}
}
}
功能getEmptyItemsNotUpdated
private List<int> getEmptyItemsNotUpdated(SQLiteConnection connection)
{
using (SQLiteCommand command = new SQLiteCommand(connection))
{
//return idToUpdate;
}
}
答案 0 :(得分:2)
请注意,SQLiteConnection实例不保证是线程 的安全即可。你应该避免在几个中使用相同的SQLiteConnection 线程同时。建议打开新连接 每个线程并在工作完成时关闭它。其实, 每次使用时都不会创建/处理连接 池= TRUE;连接字符串选项 - 连接将存储在 连接池。这极大地提升了性能。
答案 1 :(得分:0)
是的,你可以重复使用命令,但这样做通常很尴尬,因为你需要清除参数,更改命令文本等等。到你的时候完成所有这些,通常更容易从一个干净的对象开始。而且由于大多数方法只应该做一件事,因此您很难找到需要多个方案的方案。
重新使用的主要时间命令是当你想连续多次发出相同的命令时,可能只是在调用之间改变参数值。根据ADO.NET提供程序的不同,重用命令可能会产生很大的不同(提高性能),或者它可能几乎没有差别。