大佬教程收集整理的这篇文章主要介绍了SQlite 连接在执行前自行关闭,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了一个奇怪的问题,我似乎无法找到答案...
我有一段代码,它使用事务和参数将数据插入到 SQLite 数据库中。它从传递的对象 List<T>
列表中获取值。一共有74个参数……我的代码是这样的
dbConnection.open();
using (sqlitetransaction transaction = dbConnection.begintransaction())
{
foreach (CardScryfall _card in _cards)
{
sqliteCommand com = dbConnection.CreateCommand();
com.CommandText = sql;
com.Parameters.Add("@dbID",sqliteType.Integer); //Mandatory
//Assign values to Parameters
com.Parameters[0].Value = GetNextDBID();
//Assign card propertIEs to parameters
com.Parameters.Add("@objectname",sqliteType.Text);
com.Parameters[com.Parameters.IndexOf("@objectname")].Value = _card.objectname;
//Next 72 parameters are created the same way.
//replace NulL with dbnull.Value
foreach (sqliteParameter par in com.Parameters)
{
if (par.Value == null)
{
par.Value = dbnull.Value;
}
}
//Execute query
com.Prepare();
com.ExecuteNonquery();
transaction.Commit();
com.dispose();
}
}
dbConnection.Close();
现在...当我删除 using transaction
部分时,代码工作正常,但速度非常慢...
所以我补充说想把它包装成一个事务以提高性能。
现在的问题是在添加参数中间的某个地方(每次我单步执行代码时都不同)dbconnection.State
从打开变为关闭所以当代码到达 com.Prepare()
以进行第一次插入和我收到连接已关闭的错误...我有 10k+ 条记录要插入
我尝试设置 dbConnection.DefaultTimeout = 0
但没有帮助...
你能帮忙吗???
谢谢
更新:@H_450_32@
我发现了我的问题...
函数 GetNextDBID()
正在检索打开和关闭 DBconnection 的最后一个 recordID ......所以我改变了代码,现在它工作正常
无需在循环中创建命令。您应该创建一次,然后只为参数分配新值。
同样,您不需要在循环的每次迭代中提交事务。最后做一次。
async dragAndDrop(dragElement: WebElement,dropElement: WebElement) {
await browser.actions().mouseMove(dragElement).perform();
await browser.actions().mouseDown(dragElement).perform();
await browser.actions().mouseMove({ x: 10,y: 0 }).perform();
await browser.actions().mouseMove(dropElement).perform();
await browser.actions().mouseUp().perform();
}
以上是大佬教程为你收集整理的SQlite 连接在执行前自行关闭全部内容,希望文章能够帮你解决SQlite 连接在执行前自行关闭所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。