C# SQLite基础工具类

目录

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;
        }
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/261465.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习模型压缩方法:知识蒸馏方法总结

本文将介绍深度学习模型压缩方法中的知识蒸馏,内容从知识蒸馏简介、知识的种类、蒸馏机制、师生网络结构、蒸馏算法以及蒸馏方法等六部部分展开。 一、知识蒸馏简介 知识蒸馏是指用教师模型来指导学生模型训练,通过蒸馏的方式让学生模型学习到教师模型的知识。在模型压缩中,…

在RT-Thread中使用SystemView进行调试分析

一、SystemView SystemView is a toolkit for visual analysis of any embedded system. SystemView gives complete insight into an application, to gain a deep understanding of the runtime behavior, going far beyond what a debugger is offering. This is particula…

VUE实现购物商城网站前端源码

文章目录 1.设计来源1.1 登录注册页面1.2 主界面1.3 列表界面1.4 详细界面1.5 购物车界面 2.源码2.1源码目录结构2.2源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/135054910 VUE实现购物商城网站前端源码&…

thinkphp的生命周期

1.入口文件 index.php 用户通过入口文件&#xff0c;发起服务请求&#xff0c;是整个应用的入口与七点 定义常量&#xff0c;加载引导文件&#xff0c;不要放任何业务处理代码 2.引导文件 start.php; 加载常量->加载环境变量->注册自动加载->注册错误与异常->加…

在modelsim中查看断言

方法一&#xff1a;单纯的modelsim环境 &#xff08;1&#xff09;编译verilog代码时按照system verilog进行编译 vlog -sv abc.v 或者使用通配符编译所有的.v或者.sv文件 &#xff08; vlog -sv *.sv *.v&#xff09; &#xff08;2&#xff09;仿真命令加一个-assert…

手把手教你制作微信图书小程序商城

随着微信小程序的普及和发展&#xff0c;越来越多的商家开始意识到微信小程序的商机。微信小程序商城成为了各行各业商家们开展线上业务的首选。那么&#xff0c;如何制作一款自己的微信图书小程序商城呢&#xff1f;下面就手把手教你一步步完成。 第一步&#xff0c;登录乔拓云…

前端路由模式

文章目录 一、hash 模式Hash 模式的特点window.onhashchange 事件 二、history 模式history APIwindow.onpopstate 事件解决history模式下页面刷新404问题 如何选择合适的路由模式 一、hash 模式 hash 模式是一种把前端路由的路径用 # 拼接在真实 url 后面的模式&#xff0c;通…

CentOS 7 制作openssh 9.6 rpm包更新修复安全漏洞 —— 筑梦之路

2023年12月18日 openssh 发布新版9.6p1&#xff0c;详细内容阅读OpenSSH: Release Notes 背景说明 之前也写过多篇制作openssh rpm包的文章&#xff0c;为何要重新来写一篇制作openssh 9.6版本的&#xff1f; openssh 9.6 rpm包制作和之前存在区别&#xff0c;对于CentOS 7来…

贝叶斯判别

参考文献&#xff1a; 6 判别分析 | 多元统计分析示例https://www.cnblogs.com/qizhou/p/13495598.html 一、问题描述 贝叶斯判别的本质是一类分类问题&#xff1a;基于若干采样样本&#xff0c;如何学习一个分类器对新样本数据进行分类并保证分类错误的概率最小。 假设 一…

java并发编程五 ReentrantLock,锁的活跃性

多把锁 一间大屋子有两个功能&#xff1a;睡觉、学习&#xff0c;互不相干。 现在小南要学习&#xff0c;小女要睡觉&#xff0c;但如果只用一间屋子&#xff08;一个对象锁&#xff09;的话&#xff0c;那么并发度很低 解决方法是准备多个房间&#xff08;多个对象锁&#xf…

Windows 11 系统下JDK17的下载与配置

一般地&#xff0c;在做Java项目的时候&#xff0c;我一般喜欢用 Idea 软件来写代码&#xff0c;idea是代码编辑器&#xff0c;JDK是用来翻译写好的代码&#xff0c;两者缺一不可&#xff01;&#xff01;&#xff01; 下面我就来讲一下如何进行JDK17的下载与配置 JDK17的下载…

鸿蒙ArkTS语言介绍与TS基础语法

1、ArkTS介绍 ArkTS是HarmonyOS主力应用开发语言&#xff0c;它在TS基础上&#xff0c;匹配ArkUI框架&#xff0c;扩展了声明式UI、状态管理等响应的能力&#xff0c;让开发者以更简洁、更自然的方式开发跨端应用。 JS 是一种属于网络的高级脚本语言&#xff0c;已经被广泛用…

联盟 | Shoplazza X HelpLook,AI技术助推商业效能增长

随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;其在各个领域的影响力日益增强。特别是近几年&#xff0c;无论是独立站还是电商平台&#xff0c;都在积极探索利用AI来分析数据以及提升运营效率的方式。 在这场AI技术的浪潮中&#xff0c;Shoplazza 与 Hel…

Jmeter关联操作

1.首先右键添加一个线程选择线程组,命名为线程组-1&#xff0c;添加取样器选择HTTP请求--城市天气 2.线程组-1右键&#xff0c;添加取样器选择后置处理器中的JSON提取器 3.线程组-1右键,添加取样器选择后置处理器中的BeanShell 后置处理程序(必须平级) 4.首先右键添加一个线程选…

JVM启动流程(JDK8)

JVM启动流程(JDK8) JVM的启动入口是位于jdk/src/share/bin/java.c的JLI_Launch函数,其定义如下: int JLI_Launch(int argc, char ** argv, /* main argc, argc */int jargc, const char** jargv, /* java args */int appclassc, const char** appclass…

贵金属入门知识有哪些?

贵金属作为国际知名的理财产品之一&#xff0c;市场人气居高不下&#xff0c;当前由于社会上的不确定分享增加&#xff0c;出于保值避险需求的推动&#xff0c;贵金属迎来了新一波发展高峰。对于刚刚接触贵金属市场的交易者来说&#xff0c;了解贵金属入门知识&#xff0c;做好…

安卓开发学习---kotlin版---笔记(三)

网络 安卓主页的网络框架&#xff1a;OkHttp 在OkHttp的基础上进行封装的&#xff1a;Retrofit框架&#xff0c;更常使用 OkHttp学习 在使用网络请求的时候&#xff0c;先添加网络访问权限&#xff1a; <uses-permission android:name"android.permission.INTERNET&…

vue2 组件传递数据

向子组件传递数据通过Props 1.创建子组件 详细步骤&#xff1a; 1.在components创建子组件 2.等父组件接受到参数后通过Props来接受父组件传递过来的数据 <template><div id"app"><h2>title:{{ title }}</h2><p>tips:{{ tips }}<…

【力扣】148.排序链表

148.排序链表 怎么说&#xff0c;这道题看上去挺简单的&#xff0c;但是要搞清楚的知识点那还真不少&#xff0c;刷题好痛苦&#xff0c;但是要刷&#xff01;嘿嘿~ 首先&#xff0c;要搞懂归并排序&#xff0c;然后是递归。这道题我刚开始想的是递归&#xff0c;但是题友说时…

2023/12/21作业

思维导图 代码 .text .global _start _start: 灯1 gpio时钟使能 [4]->1 0x5000A28 LDR R0,0x50000A28 指定寄存器地址 LDR R1,[R0]将寄存器取出放到R1 ORR R1,R1,#(0x1<<4)将第四位设置为1 STR R1,[R0]读取R0寄存器到R1 PE…