C# SQLite基础工具类

news/2024/10/18 8:30:34/

目录

1、安装System.Data.SQLite工具包

2、创建数据库

3、数据库的连接与断开

4、执行一条SQL语句

5、批量执行sql语句 

6、返回首行首列值

7、执行sql语句返回datatable 


1、安装System.Data.SQLite工具包

2、创建数据库

        /// <summary>
        /// 数据库路径
        /// </summary>
        private string databasepath = Application.StartupPath + @"\DB\";

        /// <summary>
        /// 数据库名称
        /// </summary>
        private const string databasename = "AnDB.db";

        /// <summary>
        /// 创建数据库
        /// </summary>
        public void CreateDataBase()
        {
            try
            {//判断数据库是否存在
                if (!File.Exists(databasepath + databasename))
                {
                    if (!Directory.Exists(databasepath))//判断文件夹是否存在不存在则创建
                        Directory.CreateDirectory(databasepath);
                    SQLiteConnection.CreateFile(databasepath + databasename);
                }
            }
            catch
            {//异常处理
            }
        }

3、数据库的连接与断开

   public string SQLiteConnectiongString = "Data Source =" + Application.StartupPath + @"\DB\AnDB.db" + ";Pooling = true; FailIfMissing = true";//连接字符串

        public SQLiteConnection Conn = null;

        public bool StarConn()//连接
        {
            try
            {
                Conn = new SQLiteConnection(SQLiteConnectiongString);
                if (Conn.State != ConnectionState.Open)//判断数据库是否打开
                {
                    Conn.Open();//建立连接
                }
                return Conn.State ==ConnectionState.Open;
            }
            catch (Exception)
            {//异常处理
                return false;
            }
        }

        public void CloseConn()// 解除connection
        {
            if (Conn.State == ConnectionState.Open || Conn.State == ConnectionState.Broken)
                Conn.Close();
        }

4、执行一条SQL语句

 public bool ExecuteSQL(string strsql) //执行一条SQL语句,实现数据库事务。
        {
            //创建MySqlCommand执行命令语句对象
            using (SQLiteCommand cmd = new SQLiteCommand())//使用using语句,方便using语句中声明的对象自动被Dispose
            {
                if (Conn.State != ConnectionState.Open)
                {
                    Conn.Open();
                }
                cmd.Connection = Conn; //MySqlCommand执行命令语句对象添加数据库连接对象
                try
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = strsql;
                    cmd.ExecuteNonQuery();  //执行非查询数据库操作
                    return true;
                }
                catch (Exception ex)
                {//异常处理
                    return false;
                }
            }
        }

5、批量执行sql语句 

public bool BatchExecuteSQL(List<string> strsqllist)
        {
            if (strsqllist.Count == 0)
            {
                return false;
            }
            else
            { //创建MySqlCommand执行命令语句对象
                using (SQLiteCommand cmd = new SQLiteCommand())//使用using语句,方便using语句中声明的对象自动被Dispose
                {
                    if (Conn.State!=ConnectionState.Open)  //判断是否有连接
                    {
                        Conn.Open(); 
                    }
                        SQLiteTransaction tx = Conn.BeginTransaction(IsolationLevel.ReadCommitted);//创建事务solationLevel.ReadCommitted
                        cmd.Transaction = tx;  //MySqlCommand执行命令语句对象添加事务对象
                        cmd.Connection = Conn; //MySqlCommand执行命令语句对象添加数据库连接对象
                        try
                        {
                            for (int n = 0; n < strsqllist.Count; n++) //遍历SQL语句,依次执行
                            {
                                cmd.CommandType = CommandType.Text;
                                cmd.CommandText = strsqllist[n];
                                cmd.ExecuteNonQuery();  //执行非查询数据库操作
                            }
                            tx.Commit();//一次性提交事务
                            return true;
                        }
                        catch (Exception ex)
                        {
                            tx.Rollback();//异常处理
                            return false;
                        }
                }
            }
        } 

6、返回首行首列值

 public int GetOnly(string strsql)//执行sql语句获取唯一值(总数,一列等)
        {
            try
            {
                if (Conn.State != ConnectionState.Open)
                {
                    Conn.Open();
                }
                using (SQLiteCommand cmd = new SQLiteCommand(strsql, Conn))
                {
                    return Convert.ToInt32(cmd.ExecuteScalar());
                }
            }
            catch (Exception ex)
            {
                return -1;
            }
        }

7、执行sql语句返回datatable 

public DataTable GetDataTable(string strsql)//, params SQLiteParameter[] commandParameters) //sql查询 ,返回datatable
        {
            DataTable dt = new DataTable();  
            if (Conn.State!=ConnectionState.Open) //数据库连接
            {
                Conn.Open();
            }
            try //在这里用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在
            {
                using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(strsql, Conn))
                {
                    adapter.Fill(dt);            //将查询到数据填充到数据集
                }
            }
            catch (Exception ex)
            {//异常处理
            }
            
            return dt;
        }
 


http://www.ppmy.cn/news/1279102.html

相关文章

吴恩达RLHF课程笔记

1.创建偏好数据集 一个prompt输入到LLM后可以有多个回答&#xff0c;对每个回答选择偏好 比如{prompt,answer1,answer2,prefer1} 2.根据这个数据集&#xff08;偏好数据集&#xff09;&#xff0c;创建reward model&#xff0c;这个model也是一个LLM,并且它是回归模型&#…

C#中使用OpenCV的常用函数

以下是一些C#中使用OpenCV的常用函数例子&#xff1a; 1. 加载图像&#xff1a; using OpenCvSharp;Mat image Cv2.ImRead("path_to_your_image.jpg", ImreadModes.Color); 2. 显示图像&#xff1a; Cv2.NamedWindow("Image Window", WindowFlags.Nor…

【大数据】NiFi 中的 Controller Service

NiFi 中的 Controller Service 1.Service 简介1.1 Controller Service 的配置1.1.1 SETTING 基础属性1.1.2 PROPERTIES 使用属性1.1.3 COMMENT 页签 1.2 Service 的使用范围 2.全局参数配置3.DBCPConnectionPool 的使用样例4.在 ExcuseGroovyScript 组件中使用 Service 1.Servi…

多级缓存:亿级流量的缓存方案

文章目录 一.多级缓存的引入二.JVM进程缓存三.Lua语法入门四.多级缓存1.OpenResty2.查询Tomcat3.Redis缓存预热4.查询Redis缓存5.Nginx本地缓存6.缓存同步 一.多级缓存的引入 传统缓存的问题 传统的缓存策略一般是请求到达Tomcat后&#xff0c;先查询Redis&#xff0c;如果未…

YOLO同时对图片和标签进行重命名

import osimage_folder /path/to/image/folder # 图像文件夹路径 label_folder /path/to/label/folder # 标签文件夹路径image_files sorted(os.listdir(image_folder)) # 获取图像文件列表并排序 label_files sorted(os.listdir(label_folder)) # 获取标签文件列表并排…

安装nodejs,配置环境变量并将npm设置淘宝镜像源

安装nodejs并将npm设置淘宝镜像源 1. 下载nodejs 个人不喜欢安装包&#xff0c;所以是下载zip包的方式。这里我下载的node 14解压包版本 下载地址如下&#xff1a;https://nodejs.org/dist/v14.15.1/node-v14.15.1-win-x64.zip 想要其他版本的小伙伴去https://nodejs.org/di…

Uniapp 开发 BLE

BLE 低功耗蓝牙&#xff08;Bluetooth Low Energy&#xff0c;或称Bluetooth LE、BLE&#xff0c;旧商标Bluetooth Smart&#xff09;&#xff0c;用于医疗保健、运动健身、安防、工业控制、家庭娱乐等领域。在如今的物联网时代下大放异彩&#xff0c;扮演者重要一环&#xff…

论文阅读——llava

Visual Instruction Tuning LLaVA 指令智能体分为两类&#xff1a;端到端的&#xff0c;通过LangChain[1]/LLM[35]协调各种模型的系统。 数据集生成用GPT辅助生成的&#xff0c;具体不写了。 模型结构&#xff1a; input image Xv LLM&#xff1a;Vicuna visual encoder&a…