基于.NET Core3.1的SQLiteHelper增删改帮助类
安装驱动包
install-package Microsoft.Data.Sqlite -version 3.1.7
install-package System.Data.SQLite.Core -version 1.0.113.1
帮助类如下代码:
using Microsoft.Data.Sqlite;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SQLite;
using System.Linq;
using System.Threading.Tasks; namespace WebApplication1.Models
{
public class SQLiteHelper
{
private static string connectionString = string.Format(@"Data Source={0}", "D:\\TEMP\\abc.sqlite3.db"); /// <summary>
/// 适合增删改操作,返回影响条数
/// </summary>
/// <param name="sql">SQL</param>
/// <param name="parameters">参数</param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql, params SqliteParameter[] parameters)
{
using (SqliteConnection conn = new SqliteConnection(connectionString))
{
using (SqliteCommand comm = conn.CreateCommand())
{
try
{
conn.Open();
comm.CommandText = sql;
comm.Parameters.AddRange(parameters);
return comm.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if (conn != null && conn.State != ConnectionState.Closed)
conn.Close();
} }
}
} /// <summary>
/// 查询操作,返回查询结果中的第一行第一列的值
/// </summary>
/// <param name="sql">SQL</param>
/// <param name="parameters">参数</param>
/// <returns></returns>
public static object ExecuteScalar(string sql, params SqliteParameter[] parameters)
{
using (SqliteConnection conn = new SqliteConnection(connectionString))
{
using (SqliteCommand comm = conn.CreateCommand())
{
try
{
conn.Open();
comm.CommandText = sql;
comm.Parameters.AddRange(parameters);
return comm.ExecuteScalar();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if (conn != null && conn.State != ConnectionState.Closed)
conn.Close();
}
}
}
} /// <summary>
/// 执行ExecuteReader
/// </summary>
/// <param name="sqlText">SQL</param>
/// <param name="parameters">参数</param>
/// <returns></returns>
public static SqliteDataReader ExecuteReader(string sql, params SqliteParameter[] parameters)
{
SqliteConnection conn = null;
try
{
//SqlDataReader要求,它读取数据的时候有,它独占它的SqlConnection对象,而且SqlConnection必须是Open状态
conn = new SqliteConnection(connectionString);//不要释放连接,因为后面还需要连接打开状态
SqliteCommand cmd = conn.CreateCommand();
conn.Open();
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
//CommandBehavior.CloseConnection当SqlDataReader释放的时候,顺便把SqlConnection对象也释放掉
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
conn.Close();
}
return null;
} /// <summary>
/// Adapter调整,查询操作,返回DataTable
/// </summary>
/// <param name="sql">SQL</param>
/// <param name="parameters">参数</param>
/// <returns></returns>
public static DataTable ExecuteDataTable(string sql, params SqliteParameter[] parameters)
{
using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql, connectionString))
{
DataTable dt = new DataTable();
adapter.SelectCommand.Parameters.AddRange(parameters);
adapter.Fill(dt);
return dt;
}
} }
}
基于.NET Core3.1的SQLiteHelper增删改帮助类的更多相关文章
- 基于AT UI实现表格的增删改查遇到的坑
基于AT UI实现表格的增删改查遇到的坑 坑一.表格数据加载的渲染报错 报错:Error in render: "TypeError: Cannot read property 'isChe ...
- 基于SSM之Mybatis接口实现增删改查(CRUD)功能
国庆已过,要安心的学习了. SSM框架以前做过基本的了解,相比于ssh它更为优秀. 现基于JAVA应用程序用Mybatis接口简单的实现CRUD功能: 基本结构: (PS:其实这个就是用的Mapper ...
- 最简单的基于JSP标准标签库的增删改查
创建数据库中的表:CREATE TABLE `websites` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL DE ...
- 基于Django框架对MongoDB实现增删改查
在上一篇中,咱们已经实现了Scrapy框架爬取数据,并且存储到Mongodb数据库, 接下来呢,,,,,,,,,,,,, 咱们就要对这些数据进行操作. 目标:从Mongodb数据库取出数据,通过Dja ...
- pdo 封装增删改查类
<?php/** * Class model * @package Core\lib */class model{ protected $pdo = null; // 连接数据库 ...
- MongoDB-JAVA-Driver 3.2版本常用代码全整理(1) - 增删改
MongoDB的3.x版本java驱动相对2.x做了全新的设计,类库和使用方法上有很大区别.例如用Document替换BasicDBObject.通过Builders类构建Bson替代直接输入$命令等 ...
- Django之model基础(增删改查)
一.ORM 映射关系 表名 <-------> 类名 字段 <-------> 属性 表记录 <------->类实例对象二.创建表(建立模型) 在创建表之前的准备 ...
- Day 18 :面向对象[基础,继承,组合]类的增删改查
有的人说,编程有3种范式: 1.面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 2.面向函数:面向函数是面向过程的升级版,也就是把每个 ...
- python之类与对象属性的增删改查
类属性与对象属性的增删改查 类属性的增删改查 class School: """ 文档 """ Teacher = "老王&quo ...
- JdbcTemplate实现增删改查操作
JdbcTemplate介绍 为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架,Spring Boot Spring Data-JP ...
随机推荐
- Springcloud gateway整合(集成)swagger2+finfe4j踩坑
项目使用gateway代替之前的zuul网关,需要整合swagger,踩了许多坑之后终于解决问题,话不多说直接上代码 因为使用的是阿里的东西所以注册中心选择了nacos,它的配置这里就不贴了 spri ...
- windows文件夹被占用的解除办法
1.第一步,按下快捷键组合 ctrl alt del,打开任务管理器窗口,点击上方菜单栏中的性能选项. 2. 第二步,在性能页面下找到打开资源监视器按钮并点击. 3. 第三步,进入资源监视器页面,点击 ...
- vue3.0学习笔记
vue3转vue2: https://vue-next-template-explorer.netlify.app/ 1. Vue3.0六大两点 Performance:性能比Vue2.x快1.2~2 ...
- Mac下Homebrew更新国内源brew update卡死(完美解决,网上都不完整)
https://blog.csdn.net/zz00008888/article/details/113880633
- 导出SQL SERVER 数据字典语句
--use YourDatabase --指定要生成数据字典的数据库go SELECT 表名=case when a.colorder=1 then d.name else '' end, 表说明=c ...
- Python列表等长度分割
1 def list_of_groups(init_list, childern_list_len): 2 ''' 3 :param init_list: 4 :param childern_list ...
- 关于jsp 中数字格式化<fmt:formatNumber>标签的用法
刚刚一个我负责的网站,出现了一个bug ,在之前没有遇到过,而且生产环境运行了4/5年了也没有发生该问题,今天发生了.所以查了一下<fmt:formatNumber>标签的用法,自己记录一 ...
- sleep(0)的意义
Thread.Sleep(0) 并非是真的要线程挂起0毫秒,意义在于这次调用Thread.Sleep(0)的当前线程确实的被冻结了一下,让其他线程有机会优先执行. Thread.Sleep(0) 是你 ...
- 广告网络归因技术之SKAdNetwork
IDFA的背景 为了保护用户隐私,早在2012年就不再允许其生态中的玩家获取用户的唯一标识符,但是商家在移动端打广告的时候又希望能监控到每一次广告投放的效果,因此,苹果想出了折中的办法,就是提供另外一 ...
- 软件架构易用性在软件UI中的体现
软件架构易用性在软件UI中的体现 贾硕航 (石家庄铁道大学,河北省石家庄市,050000) 摘要:易用性(usability)是一种以使用者为中心的设计概念,易用性设计的重点在于让产品的设计能够符合使 ...