首页 新闻 会员 周边

事务执行过程中插入断点的问题

0
悬赏园豆:10 [已关闭问题] 关闭于 2015-12-22 17:24
  public int ExecuteSqlList(string[] sqlStr)
        {
            int i = 0;
            using (SQLiteTransaction dbTrans = conn.BeginTransaction())
            {
                using (SQLiteCommand cmd = conn.CreateCommand())
                {
                    try
                    {
                       foreach (string item in sqlStr)
                        {
                            if (item != null && item != "")
                            {
                                cmd.CommandText = item;
                                cmd.CommandType = CommandType.Text;
                                int j=cmd.ExecuteNonQuery();
                                i+=j;
                                 
                            }
                        }
                      
                        dbTrans.Commit();
                    }
                    catch
                    {
                        dbTrans.Rollback();
                    }
                }
            }
            return i;

代码如上,发现这个函数返回值一直是0.

在i+=j出加断点调试,发现不会执行该语句,函数貌似只进入了foreach循环一次,就返回了。

是事务的特性导致的吗?

菜鸟E419的主页 菜鸟E419 | 初学一级 | 园豆:120
提问于:2015-12-18 18:15
< >
分享
所有回答(3)
0

当然不是,要看你数组有多少个

吴瑞祥 | 园豆:29449 (高人七级) | 2015-12-18 18:49

我数组长度是2000,但还是只执行一次

支持(0) 反对(0) 菜鸟E419 | 园豆:120 (初学一级) | 2015-12-22 13:47
0

SQLite将把全部要执行的SQL语句先缓存在内存当中,然后等到COMMIT的时候一次性的写入数据库。

事务要么全部执行成功,要么全部执行失败。貌似这种写法不合理

菜鸟E419 | 园豆:120 (初学一级) | 2015-12-22 14:58
0

推荐一个用于debug的最新工具,云手机-远程调试!全部远程操控真机,绝非模拟器!!http://t.cn/R446765

码农的世界我想懂 | 园豆:206 (菜鸟二级) | 2015-12-23 17:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册