http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3960|回复: 5

[其他] 问下高手,C# SQLITE锁定的问题

[复制链接]
发表于 2014-4-27 20:45:05 | 显示全部楼层 |阅读模式
[C#] 纯文本查看 复制代码
  SQLiteDBHelper sh = new SQLiteDBHelper(conf.Data);
                SQLiteDataReader reader = sh.ExecuteReader("select * from Article where Fenzu=" + "'" + group + "'", null);
                if (reader != null)
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                           string strSqlite = "update Article set Content='" +  reader["Content"].ToString())+ "',Description='" + "" + "',LastEdit='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "' where ID=" + "'" + reader["ID"].ToString() + "'";
  
                        
                           SQLiteDBHelper db = new SQLiteDBHelper(conf.ArticleData);
                          int nCount = db.ExecuteNonQuery(strSqlite, null);
                            Application.DoEvents();
                        }


                    }
                }

为什么

为什么代码每次运行都报错,提示 database is locked
这个问题真的困扰我很久了,希望得到帮助,谢谢了
我主要想实现,批量替换数据库某一字段的内容,或者您有什么好的办法,希望可以告诉我,先谢了



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-4-27 21:14:28 | 显示全部楼层
直接update就是了为什么要循环?
 楼主| 发表于 2014-4-27 21:15:43 | 显示全部楼层
站长苏飞 发表于 2014-4-27 21:14
直接update就是了为什么要循环?

因为数据库中有N篇文章,我要替换所有文章中的指定内容
发表于 2014-4-28 11:24:12 | 显示全部楼层
用事务试试。
发表于 2014-10-17 13:37:03 | 显示全部楼层
先取到table中循环
发表于 2014-10-18 16:24:42 | 显示全部楼层
private readonly object obj = new object();

        public int Insert(List<d_Last30DaysEffectP4PProductsEntity> list)
        {
            string[] arrSql = new string[list.Count];
            for (int i = 0; i < list.Count; i++)
            {
                arrSql[i] = string.Format(@"insert into d_Last30DaysEffectP4PProducts values (null,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}',{13});",
                    list[i].ProductAliId, list[i].ProductName.Replace("'", "''"), list[i].P4PShowCnt, list[i].P4PClickCnt, list[i].P4PClickRate,
                    list[i].P4PSpend, list[i].P4PAvgCost, list[i].SumShowNum, list[i].SumClickNum, list[i].SumClickRate,
                    list[i].SumVisitorCnt, list[i].SumProdFbRate, list[i].SumProdFbRate, "datetime('now', 'localtime')");
            }

            int n = 0;
            lock (obj)
            {
                n = UserDataSqliteHelper.ExecuteNonQuery(arrSql);
            }
            return n;
        }

把我的代码拿去该一下试试
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-24 16:33

© 2014-2021

快速回复 返回顶部 返回列表