C# SQLite基础工具类

news2024/12/23 15:17:38

目录

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.coloradmin.cn/o/1327362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MacOS+Homebrew+iTerm2+oh my zsh+powerlevel10k美化教程

MacOS终端 你是否已厌倦了MacOS终端的大黑屏&#xff1f; 你是否对这种美观的终端抱有兴趣&#xff1f; 那么&#xff0c;接下来我将会教你用最简单的方式来搭建一套自己的终端。 Homebrew的安装 官网地址&#xff1a;Homebrew — The Missing Package Manager for macOS (o…

腾讯云发布升级版金融音视频解决方案,提供全新架构、安全和特性

远程银行、视频尽调、全媒体客服、路演直播……近年来&#xff0c;音视频技术支撑下的非接触式金融服务&#xff0c;成为了金融机构数字化转型和探索服务创新的重要方向。 12月21日&#xff0c;腾讯云正式发布升级版金融级音视频解决方案。新方案在架构、安全和特性上进行全面…

深度相机—TOF、RGB双目、结构光原理及优势对比

烟台致瑞图像视觉技术2021-03-18 15:14 目前的深度相机根据其工作原理可以分为三种&#xff1a;TOF、RGB双目、结构光。 一、TOF TOF是Time of flight的简写&#xff0c;直译为飞行时间的意思。所谓飞行时间法3D成像&#xff0c;是通过给目标连续发送光脉冲&#xff0c;然后…

057:vue组件方法中加载匿名函数

第057个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

Linux笔记---文件和目录操作

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux学习 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 命令 ls (List): pwd (Print Working Directory): cp (Copy): mv (Move): rm (Remove): 结语 我的其他博客 前言 学习Linux命令…

Unity DOTS物理引擎的核心分析与详解

最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎&#xff0c;今天我们来给大家分享和介绍一下这个物理引擎的使用。 Unity.Physics的设计哲学 Unity.Physics是基于DOTS设计思想的一个高性能C#物理引擎的实现, 包含了物理刚体的迭代计算与碰撞检测等查…

HBase基础知识(一):HBase简介、HBase数据模型与基本架构

第1章HBase简介 1.1HBase定义 HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。 1.2HBase数据模型 逻辑上&#xff0c;HBase的数据模型同关系型数据库很类似&#xff0c;数据存储在一张表中&#xff0c;有行有列。但从HBase的底层物理存储结构&#xff08;K-V&a…

创新固定资产管理方式:易点易动集成企业微信的全新解决方案

在当今竞争激烈的商业环境中&#xff0c;高效的固定资产管理对于企业的成功至关重要。然而&#xff0c;传统的资产管理方式往往繁琐、容易出错&#xff0c;并且缺乏实时性和准确性。为了解决这些挑战&#xff0c;易点易动与企业微信进行了集成合作&#xff0c;推出了一种全新的…

八、W5100S/W5500+RP2040之MicroPython开发<HTTP Server示例>

文章目录 1 前言2. 相关网络信息2.1 简介2.2 HTTP Server工作步骤2.3 HTTP Server的优点2.4 HTTP Server应用场景 3 WIZnet以太网芯片4 HTTP网络设置示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言 随着云计…

Windows11编译VTM源码生成Visual Studio 工程

VTM介绍 VTM作为H266/VVC标准的官方参考软件&#xff0c;一直用作H266/VVC标准的研究和迭代。关于H2666/VVC标准的介绍、代码、提案、文档等&#xff0c;可以参考H266/VVC编码标准介绍。 官方代码地址&#xff1a; https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM&…

人工智能对网络安全的影响

技术的快速发展带来了不断增长的威胁环境&#xff0c;网络犯罪分子和恶意行为者利用我们互联世界中的漏洞。在这个数字时代&#xff0c;数据泄露和网络攻击呈上升趋势&#xff0c;仅靠传统的安全措施已经不够了。人工智能 &#xff08;AI&#xff09; 的进步彻底改变了网络安全…

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…

React-Native环境搭建(IOS)

系列文章目录 React-Native环境搭建&#xff08;IOS&#xff09; 目录 系列文章目录前言一、IOS环境搭建前置说明二、环境搭建步骤1.Homebrew安装2.安装Xcode3.Node4.watchman5.CocoaPods 三、项目启动1.初始化项目2.项目启动 总结 前言 React-Native开发环境的搭建&#xff…

Educational Codeforces Round 160 (Rated for Div. 2) A~C

目录 A. Rating Increase 题目分析&#xff1a; B. Swap and Delete 题目分析: C. Game with Multiset 题目分析: A. Rating Increase 题目分析&#xff1a; 因为首部不为零&#xff0c;故我们从第二个字符开始遍历&#xff0c;如果遇到第一个不为‘0’的字符&#xff0…

Jupyter Notebook修改默认工作目录

1、参考修改Jupyter Notebook的默认工作目录_jupyter文件路径-CSDN博客修改配置文件 2.在上述博客内容的基础上&#xff0c;这里不是删除【%USERPROFILE%】而是把这个地方替换为所要设置的工作目录路径&#xff0c; 3.【起始位置】也可以更改为所要设置的工作目录路径&#x…

Unity中的导航系统

NavMesh(导航网格)是3D游戏世界中用于实现动态物体自动寻路的一种技术&#xff0c;将游戏中复杂的结构组织关系简化为带有一定信息的网格&#xff0c;在这些网格的基础上通过一系列的计算来实现自动寻路。导航时&#xff0c;只需要给导航物体挂载导航组建&#xff0c;导航物体便…

树莓派,opencv,Picamera2利用舵机云台追踪特定颜色对象(PID控制)

一、需要准备的硬件 Raspiberry 4b两个SG90 180度舵机&#xff08;注意舵机的角度&#xff0c;最好是180度且带限位的&#xff0c;切勿选360度舵机&#xff09;二自由度舵机云台&#xff08;如下图&#xff09;Raspiberry CSI 摄像头 组装后的效果&#xff1a; 二、项目目标…

uni-app ucharts中饼图与圆环图区别

项目情况&#xff1a; uni-app的用于移动端H5项目&#xff0c;包使用uni_modules目录存放。 图表引用ucharts中的echarts配置的组件方式 区别1 饼图与圆环图在echarts使用的配置都是pie类型。但是配置raduis使用&#xff1a; radius: [40%, 70%] 区别2 组件type指明&#xf…

nodejs连接mongodb报错SyntaxError: Unexpected token .

nodejs连接mongodb报错SyntaxError: Unexpected token 如下图 经过排查&#xff0c;原因是npm默认安装的mongodb插件是最新版6.3.0 &#xff0c;而mongodb数据库版本是4.0.0 &#xff0c;两者版本不同导致nodejs报错。 解决方法是npm卸载新版本的mongodb插件&#xff0c;再安…

安卓加载项目gradle下载慢

更换镜像源 distributionUrlhttps://mirrors.cloud.tencent.com/gradle//gradle-5.6.4-all.zip