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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

量化交易学习笔记:XGBoost 在量化选股中的应用

一、引言 本篇文章通过借鉴传统机器学习算法——XGBoost——对相同的量价因子进行实验&#xff0c;方便与深度学习模型进行对比实践。 二、算法介绍 XGBoost 是在 Gradient Boosting&#xff08;梯度提升&#xff09;框架下实现的机器学习算法&#xff0c;全称为“极限梯度提…

文献速递:生成对抗网络医学影像中的应用—— CG-3DSRGAN:用于从低剂量PET图像恢复图像质量的分类指导的3D生成对抗网络

文献速递&#xff1a;生成对抗网络医学影像中的应用—— CG-3DSRGAN&#xff1a;用于从低剂量PET图像恢复图像质量的分类指导的3D生成对抗网络 本周给大家分享文献的主题是生成对抗网络&#xff08;Generative adversarial networks, GANs&#xff09;在医学影像中的应用。文献…

Sentinel 流量治理组件教程

前言 官网首页&#xff1a;home | Sentinel (sentinelguard.io) 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形…

node实现简单的数据爬虫

前言 我使用的是墨迹天气的页面&#xff0c;因为这个使用的链接简单 页面结构简单并且大都是文字形式 第一步 打开墨迹天气网址 随便点开一个页面 点击F12或者鼠标右键点击检查 查看页面的信息 分析页面内容 使用文字所在的class和标签来定位 编写代码 配置express环境 …

SpringIOC之MethodBasedEvaluationContext

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

飞天使-k8s知识点7-kubernetes升级

文章目录 验证新版本有没有问题需要安装的版本微微 1.20.6.0kubeadm upgrade plan 验证新版本有没有问题 查看可用版本的包 现有的状态 查看版本 yum list kubeadm --showduplicates |grep 1.20 yum list kubelet --showduplicates |grep 1.20 yum list kubectl --showduplic…

随机森林 2(决策树)

通过 随机森林 1 的介绍&#xff0c;相信大家对随机森林都有了一个初步的认知&#xff0c;知道了随机和森林分别指的是什么&#xff0c;以及决策树根据什么选择内部节点。本文将会从森林深入到树&#xff0c;去看一下决策树是如何构建的。网上很多文章都讲了决策树如何构建&…

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

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

tcp 的限制 (TCP_WRAPPERS)

#江南的江 #每日鸡汤&#xff1a;青春是打开了就合不上的书&#xff0c;人生是踏上了就回不了头的路&#xff0c;爱情是扔出了就收不回的赌注。 #初心和目标&#xff1a;拿到高级网络工程师 TCP_WRAPPERs Tcp_wrappers 对于七层模型中是位于第四层的安全工具&#xff0c;他…

版本化数据库管理工具Flyway介绍和Spring Boot集成使用

文章目录 核心功能如何使用 Flyway最佳实践Spring Boot使用 Flyway 是一个版本化数据库管理工具&#xff0c;用于跟踪、管理和应用数据库的变化。它非常适合在团队开发环境中使用&#xff0c;其中多个人员可能会在数据库结构进行更改。Flyway 通过版本控制可以帮助你确保所有人…

微服务之服务注册与发现

服务注册发现 服务注册就是维护一个登记簿&#xff0c;它管理系统内所有的服务地址。当新的服务启动后&#xff0c;它会向登记簿交待自己的地址信息。服务的依赖方直接向登记簿要 Service Provider 地址就行了。当下用于服务注册的工具非常多 ZooKeeper&#xff0c;Consul&…

​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化

2022年亚马逊云科技re:Invent盛会于近日在拉斯维加斯成功召开&#xff0c;吸引了众多业界精英和创新者。亚马逊云科技边缘服务副总裁Jan Hofmeyr在演讲中分享了关于亚马逊云科技海外服务器边缘计算的最新发展和创新成果&#xff0c;引发与会者热烈关注。 re:Invent的核心主题是…