C# mysql与sqlite插入大量数据方法

该代码段展示了如何在MySQL和SQLite中使用事务批量执行SQL语句。在MySQL中,每执行500条命令后提交一次事务,而在SQLite中,所有SQL语句执行完毕后一次性提交。如果发生错误,事务将回滚以保证数据一致性。
摘要由CSDN通过智能技术生成

mysql ,from:https://blog.csdn.net/majiakun1/article/details/46607163

public static void ExecuteNonQueryWithCommit(List<String> SQLList)
        {
            if (conn == null)
                return;
            if (conn.State != System.Data.ConnectionState.Open)
            {
                connect();
            }

            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = conn;
            MySqlTransaction tx = conn.BeginTransaction();
            cmd.Transaction = tx;

            try
            {
                for (int n = 0; n < SQLList.Count; n++)
                {
                    string strsql = SQLList[n].ToString();
                    if (strsql.Trim().Length > 1)
                    {
                        cmd.CommandText = strsql;
                        cmd.ExecuteNonQuery();
                    }

                    //后来加上的
                    if (n > 0 && (n % 500 == 0 || n == SQLList.Count - 1))
                    {
                        tx.Commit();
                        tx = conn.BeginTransaction();
                    }
                }
                //tx.Commit();//原来一次性提交
            }
            catch (System.Data.SqlClient.SqlException E)
            {
                tx.Rollback();
                throw new Exception(E.Message);
            }
        }

sqlite版


        public static void ExecuteNonQueryWithCommit(List<String> SQLList)
        {
            if (cn == null)
                return;
            if (cn.State != System.Data.ConnectionState.Open)
            {
                cn.Open();
            }

            using (SQLiteTransaction tran = cn.BeginTransaction())
            {
                SQLiteCommand command = new SQLiteCommand();
                command.Connection = cn;
                string ErrorSQL = "";
                try
                {
                    foreach (string SQL in SQLList)
                    {
                        ErrorSQL = SQL;
                        command.CommandText = SQL;
                        command.ExecuteNonQuery();
                    }
                    tran.Commit();
                }
                catch (Exception )
                {
                    tran.Rollback();
                    string sql = string.Empty;
                    foreach (var temp in SQLList)
                    {
                        sql += temp;
                    }
                }
                command.Dispose();
            }
          
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值