首页 > 数据库 >C#操作SQLite

C#操作SQLite

时间:2022-12-10 10:11:29浏览次数:32  
标签:SQLite string using C# cmd System new 操作 parameters

1、SQLite介绍

 

 


SQLite,是一款轻型的数据库,是遵守的ACID关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标嵌入式是的,而且已经在很多中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等。

2、C#下调用SQLite数据库

在NuGet程序包内,搜索System.Data.Sqlite,安装Sqlite类库

 

 

创建SQLiteHelper类 如下:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Data;
  4 using System.Data.SQLite;
  5 using System.IO;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Threading.Tasks;
  9 
 10 namespace DemoSQLite.com.DemoSQLite.Control
 11 {
 12     public class SQLiteHelper
 13     {
 14         ///创建数据库文件
 15         public static void CreateDBFile(string fileName)
 16         {
 17             string path = System.Environment.CurrentDirectory + @"/Data/";
 18             if (!Directory.Exists(path))
 19             {
 20                 Directory.CreateDirectory(path);
 21             }
 22             string databaseFileName = path + fileName;
 23             if (!File.Exists(databaseFileName))
 24             {
 25                 SQLiteConnection.CreateFile(databaseFileName);
 26             }
 27         }
 28 
 29         //生成连接字符串
 30         private static string CreateConnectionString()
 31         {
 32             SQLiteConnectionStringBuilder connectionString = new SQLiteConnectionStringBuilder();
 33             connectionString.DataSource = @"data/StudentDB.db";
 34 
 35             string conStr = connectionString.ToString();
 36             return conStr;
 37         }
 38 
 39         /// <summary>
 40         /// 对插入到数据库中的空值进行处理
 41         /// </summary>
 42         /// <param name="value"></param>
 43         /// <returns></returns>
 44         public static object ToDbValue(object value)
 45         {
 46             if (value == null)
 47             {
 48                 return DBNull.Value;
 49             }
 50             else
 51             {
 52                 return value;
 53             }
 54         }
 55 
 56         /// <summary>
 57         /// 对从数据库中读取的空值进行处理
 58         /// </summary>
 59         /// <param name="value"></param>
 60         /// <returns></returns>
 61         public static object FromDbValue(object value)
 62         {
 63             if (value == DBNull.Value)
 64             {
 65                 return null;
 66             }
 67             else
 68             {
 69                 return value;
 70             }
 71         }
 72 
 73         /// <summary>
 74         /// 执行非查询的数据库操作
 75         /// </summary>
 76         /// <param name="sqlString">要执行的sql语句</param>
 77         /// <param name="parameters">参数列表</param>
 78         /// <returns>返回受影响的条数</returns>
 79         public static int ExecuteNonQuery(string sqlString, params SQLiteParameter[] parameters)
 80         {
 81             string connectionString = CreateConnectionString();
 82             using (SQLiteConnection conn = new SQLiteConnection(connectionString))
 83             {
 84                 conn.Open();
 85                 using (SQLiteCommand cmd = conn.CreateCommand())
 86                 {
 87                     cmd.CommandText = sqlString;
 88                     foreach (SQLiteParameter parameter in parameters)
 89                     {
 90                         cmd.Parameters.Add(parameter);
 91                     }
 92                     return cmd.ExecuteNonQuery();
 93                 }
 94             }
 95         }
 96 
 97         /// <summary>
 98         /// 执行查询并返回查询结果第一行第一列
 99         /// </summary>
100         /// <param name="sqlString">SQL语句</param>
101         /// <param name="sqlparams">参数列表</param>
102         /// <returns></returns>
103         public static object ExecuteScalar(string sqlString, params SQLiteParameter[] parameters)
104         {
105             string connectionString = CreateConnectionString();
106             using (SQLiteConnection conn = new SQLiteConnection(connectionString))
107             {
108                 conn.Open();
109                 using (SQLiteCommand cmd = conn.CreateCommand())
110                 {
111                     cmd.CommandText = sqlString;
112                     foreach (SQLiteParameter parameter in parameters)
113                     {
114                         cmd.Parameters.Add(parameter);
115                     }
116                     return cmd.ExecuteScalar();
117                 }
118             }
119         }
120 
121         /// <summary>
122         /// 查询多条数据
123         /// </summary>
124         /// <param name="sqlString">SQL语句</param>
125         /// <param name="parameters">参数列表</param>
126         /// <returns>返回查询的数据表</returns>
127         public static DataTable GetDataTable(string sqlString, params SQLiteParameter[] parameters)
128         {
129             string connectionString = CreateConnectionString();
130             using (SQLiteConnection conn = new SQLiteConnection(connectionString))
131             {
132                 conn.Open();
133                 using (SQLiteCommand cmd = conn.CreateCommand())
134                 {
135                     cmd.CommandText = sqlString;
136                     foreach (SQLiteParameter parameter in parameters)
137                     {
138                         cmd.Parameters.Add(parameter);
139                     }
140                     DataSet ds = new DataSet();
141                     SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
142                     adapter.Fill(ds);
143                     conn.Close();
144                     return ds.Tables[0];
145                 }
146             }
147         }
148     }
149 }

 

调用方式:

/// <summary>
        /// 查询所有年级
        /// </summary>
        /// <returns></returns>
        public List<GradeEty> GetAllGrade()
        {
            List<GradeEty> gradeEties = new List<GradeEty>();

            SQLiteHelper sQLiteHelper = new SQLiteHelper();
            string sqlQuery = "SELECT * FROM 'Grade';";
            SQLiteParameter[] parameters = new SQLiteParameter[]
             {
                    //new SQLiteParameter("@IMG_ID", DbType.Int32,4),
                    //new SQLiteParameter("@USER_ID", DbType.String),
             };
            //parameters[0].Value = model.IMG_ID;
            //parameters[1].Value = model.USER_ID;

            DataTable dt = SQLiteHelper.GetDataTable(sqlQuery, parameters);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string Id = dt.Rows[i]["ID"].ToString();
                string GradeName = dt.Rows[i]["GradeName"].ToString();
            

                GradeEty clientEty = new GradeEty(Id, GradeName);
                gradeEties.Add(clientEty);
            }
            return gradeEties;
        }

 

标签:SQLite,string,using,C#,cmd,System,new,操作,parameters
From: https://www.cnblogs.com/RCJL/p/16970830.html

相关文章

  • Apache BookKeeper Insights Part 2 — Closing Ledgers Safely
    标题:ApacheBookKeeperInsightsPart2—ClosingLedgersSafely原文:https://medium.com/splunk-maas/apache-bookkeeper-insights-part-2-closing-ledgers-safely-386......
  • elasticsearch安装和使用
    下载地址:​​https://www.elastic.co/cn/downloads/past-releases#elasticsearch​​   ​​ https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.......
  • 【GRU回归预测】基于卷积神经网络结合门控循环单元CNN-GRU实现数据多维输入单输出预测
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • WXSS/CSS萌新技巧Get——text-indent
    居家半个月兴起打算学习一下小程序开发,以此为契机注册了51博客,又被新人福利送鼠标垫所吸引(旧鼠标垫搬家时丢了),于是就从这里,开始学着写博客吧!text-indent的作用是给文本加上......
  • 《DFZU2EG_4EV MPSoc之FPGA开发指南》第十五章 RGB LCD彩条显示实验​
    RGBLCD彩条显示实验​TFT-LCD是一种液晶显示屏,它采用薄膜晶体管(TFT)技术提升图像质量,如提高图像亮度和对比度等。相比于传统的CRT显示器,TFT-LCD有着轻薄、功耗低、无辐射、......
  • C#通过不安全代码看内存加载
    (注:本篇用点长,有点绕,耐心浏览)C#中类型分为值类型和引用类型,值类型存储在堆栈中,是栈结构,先进后出,引用类型存储在托管堆中。接下来用不安全代码的地址,来看一下值类型和引......
  • 25. cookie
    什么是Cookie概念:Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cooki......
  • 27. Object.defineProperty
    vue2数据驱动,双向绑定原理,Object.definePropertyObject.defineproperty是ES5的一个函数,为对象添加属性语法:Object.defineProperty(目标对象,属性名,{属性修饰符})......
  • 使用OpenGPT(ChatGPT)搭建 QQ 机器人
    本教程来自:OpenGPT搭建QQ机器人-憨憨博客有问题可来我博客询问:我的博客准备一个服务器:Windos,Centos,Ubuntu环境:Python一个QQ号用作机器人一个OpenAI账号(注册......
  • charSet编码/解码
    packagecom.Lucky.io.Code;importjava.io.UnsupportedEncodingException;importjava.nio.charset.StandardCharsets;importjava.util.Arrays;/*java中编码......