c#操作SqLite数据库

admin 2021-05-10 21:59:11 470浏览 0评论

1、在项目里面用 Navicat Premium 新建 数据库,并创建表这些

C:\Users\Administrator\source\repos\LoginDataBase\LoginDataBase\bin\Debug\db\SqLiteDataBase.db


2、项目里引用 System.Data.SQLite.dll


3、选中项目粘贴 SQLiteHelper.cs


4、项目加载就打开数据库,双击项目头 添加代码,结果如下:

        SQLiteHelper sql = new SQLiteHelper(); //声明对象
        //
        private void Form1_Load(object sender, EventArgs e)
        {
            string sqlitepath = AppDomain.CurrentDomain.BaseDirectory + "db/SqLiteDataBase.db";//设定库路径 
            sql.strConn = string.Format("Data Source={0};Pooling=true;FailIfMissing=false;", sqlitepath);
        }

5、点击后执行数据库操作

private void btnLogin_Click(object sender, EventArgs e)
        {

            string uname = txtName.Text.Trim();
            string upass = txtPass.Text.Trim();
            SqlObject sqlobj = new SqlObject();
            //参数化查询
            sqlobj.sqlText = "select Id from UserXuanji where UserNames = @uname and  UserPass = @upass";
            sqlobj.paramList.Add(new SQLiteParameter("@uname", uname));
            sqlobj.paramList.Add(new SQLiteParameter("@upass", upass));
            object obj = sql.ExecuteScalar(sqlobj.sqlText, sqlobj.paramList.ToArray());
            int i = Convert.ToInt32(obj);
            if (i > 0)
            {
                labStatus.Text = "登录成功";
            }
            else
            {
                labStatus.Text = "登录失败";
            }

        }


6、出现没导入的 按 ctrl + . 进行 using导入

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SQLite;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using XuanJiSQLiteHelper;


7、SQLiteHelper.cs

using System.Data;
using System.Data.SQLite;
using System.Data.Common;
using System.Collections.Generic;

namespace XuanJiSQLiteHelper
{
    public class SQLiteHelper
    {
        /// <summary>
        /// 创建链接字符串
        public string strConn = string.Empty;

        #region  执行Sql语句,增删改
        /// <summary>
        /// 执行Sql语句,增删改
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="parms">参数</param>
        /// <returns>影响行数</returns>
        public int ExecuteNonQuery(string sql, params SQLiteParameter[] parms)
        {
            using (SQLiteConnection conn = new SQLiteConnection(strConn))
            {
                using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
                {
                    if (parms != null)
                    {
                        cmd.Parameters.AddRange(parms);
                    }
                    conn.Open();
                    return cmd.ExecuteNonQuery();
                }
            }
        }
        #endregion

        #region 执行Sql语句,1个返回值

        /// <summary>
        /// 查询方法
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="parms">sql参数</param>
        /// <returns> 返回第一行第一列数据 </returns>
        public object ExecuteScalar(string sql, params SQLiteParameter[] parms)
        {
            using (SQLiteConnection conn = new SQLiteConnection(strConn))
            {
                using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
                {
                    if (parms != null)
                    {
                        cmd.Parameters.AddRange(parms);
                    }
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }
                    return cmd.ExecuteScalar();
                }
            }
        }
        #endregion

        #region 执行sql语句,返回结果集
        /// <summary>
        /// 执行sql语句,返回结果集
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="parms">参数</param>
        /// <returns></returns>
        public SQLiteDataReader ExecuteReader(string sql, params SQLiteParameter[] parms)
        {
            using (SQLiteConnection conn = new SQLiteConnection(strConn))
            {
                using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
                {
                    if (parms != null)
                    {
                        cmd.Parameters.AddRange(parms);
                    }
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open(); //非打开状态时,打开数据库
                    }
                    return cmd.ExecuteReader(CommandBehavior.CloseConnection);//当SQLiteDataReader释放时,释放连接
                }
            }
        }
        #endregion

        /// <summary>
        /// 多语句事务
        /// </summary>
        /// <param name="sql">sql对象集合</param>
        /// <returns></returns>
        public bool ExecTransaction(List<SqlObject> sql)
        {
            using (SQLiteConnection conn = new SQLiteConnection(strConn))
            {
                using (DbTransaction transaction = conn.BeginTransaction())
                {
                    int o = 0;
                    using (SQLiteCommand command = new SQLiteCommand(conn))
                    {
                        for (int i = 0; i < sql.Count; i++)
                        {
                            command.CommandText = sql[i].sqlText;
                            if (sql[i].paramList != null)
                            {
                                command.Parameters.AddRange(sql[i].paramList.ToArray());
                            }
                        }
                        o += (int)command.ExecuteNonQuery();
                        command.Parameters.Clear();
                        if (o >= 0)
                        {
                            transaction.Commit();
                            return true;
                        }
                        else
                        {
                            transaction.Rollback();
                            return false;
                        }
                    }

                }
            }
        }
    }
    public class SqlObject
    {
        /// <summary>
        /// sql语句
        /// </summary>
        public string sqlText { get; set; }
        /// <summary>
        /// 参数列表
        /// </summary>
        public List<SQLiteParameter> paramList = new List<SQLiteParameter>();
    }
}


上一篇: c#手册 记录
下一篇: c# get
0条评论