winform sqlite基本操作

引用sqlite数据库

winform要使用sqlite数据库,必须引用System.Data.SQLite.dll文件,添加方法:右键工程,添加,引用,浏览,选择System.Data.SQLite.dll文件,然后在代码里面便可以使用以下命名空间:

using System.Data.SQLite;
using System.Data.Sql;
using System.Data.SqlClient;
创建打开数据库

使用sqlite创建一个本地数据库,需要首选声明一个数据库连接对象,用于记录当前程序与数据库的连接,用于执行SQL语句。

SQLiteConnection db_conn = null;

使用SQLiteConnection.CreateFile函数创建一个指定名称的数据库,如果该数据库已经存在,则会删除原有数据库,创建一个新的数据库。可以使用SQLiteConnectionStringBuilder 对象为数据库设置密码,也可以不设置。

使用Open函数打开sqlite指定数据库,在调用Open函数之前,必须保证数据库文件存在。

 		/// <summary>
 		/// 创建数据库,删除之后再创建
  		/// </summary>
		/// <param name="database_file_name"></param>
 		/// <param name="paasword"></param>
 		public void Create(string database_file_name,string paasword = "")
            SQLiteConnection.CreateFile(database_file_name);////创建数据库文件
            db_conn = new SQLiteConnection(database_file_name);
            SQLiteConnectionStringBuilder sql_builder = new SQLiteConnectionStringBuilder();

            sql_builder.DataSource = database_file_name;
            sql_builder.Password = paasword;
            db_conn.ConnectionString = sql_builder.ToString();
            db_conn.Open();
        }
		/// <summary>
        /// 打开数据库,数据库必须存在
        /// </summary>
        /// <param name="database_file_name"></param>
        /// <param name="paasword"></param>
        public void Open(string database_file_name, string paasword = "")
        {
            db_conn = new SQLiteConnection(database_file_name);
            sql_builder = new SQLiteConnectionStringBuilder();

            sql_builder.DataSource = database_file_name;
            sql_builder.Password = paasword;
            db_conn.ConnectionString = sql_builder.ToString();
            db_conn.Open();
        }
执行SQL语句

使用SQLiteCommand对象来指定要执行的SQL语句的具体内容,指定执行的数据库等信息,使用ExecuteNonQuery函数执行SQL命令,具体的执行SQL语句函数如下:

		/// <summary>
        /// 执行sql命令
        /// </summary>
        /// <param name="sql"></param>
        public void DbExecuteSqlCommand(string sql)
        {
            SQLiteCommand sql_cmd = new SQLiteCommand();
            sql_cmd.CommandText = sql;
            sql_cmd.Connection = db_conn;
            sql_cmd.ExecuteNonQuery();   //更新数据
        }
使用事务批量执行SQL语句

sqlite默认执行一条sql语句为执行一条事务,当数据量比较大时,由于多条事物存在,打开和关闭文件的操作耗时比较大,可以将多条语句合并为一条事务来处理。具体的操作函数如下:

 	public bool DbInsertTransaction(List<string> sql_list)  {
            SQLiteCommand sql_cmd = new SQLiteCommand(db_conn);
            SQLiteTransaction trans = db_conn.BeginTransaction();
            sql_cmd.Transaction = trans;

            try {
                foreach (string item in sql_list) {
                    sql_cmd.CommandText = item;
                    sql_cmd.ExecuteNonQuery();
                }
                trans.Commit();
            }catch (SQLiteException exception) {
                trans.Rollback();
                return false;
            }
            return true;
        }

使用时,只需要将要执行的sql语句添加到list中传入该函数即可。如果有任意一条sql语句失败,那么将产生异常调用Rollback回滚函数,将数据库中的内容回滚回指定本次操作之前的状态。

若想在批量SQL语句中指定某条失败时,跳过,则将try catch异常捕获移动到foreach内部,然后分析失败的sql语句内容,执行相应的失败后的动作即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值