C#-SQLite-使用教程笔记

news2024/12/28 4:20:20

微软官网资料链接(可下载文档)

教程参考链接:SQLite 教程 - SQLite中文手册

项目中对应的system.dat文件可以用SQLiteStudio打开查看

参考文档:https://d7ehk.jb51.net/202008/books/SQLite_jb51.rar

总结介绍

1、下载SQLiteStudio对数据库文件进行管理、查看

2、代码中通过NuGet添加System.Data.SQLite

3、代码类:SQLiteConnection连接本地数据库文件》SQLiteCommand配置命令并执行》连接关闭

一、SQLite数据下载,安装,使用(管理查看数据)

1,下载

下载绿色免安装版本

链接:百度网盘 请输入提取码

提取码:hgoc

1、参考网站:SQLite Home Page,下载地址:System.Data.SQLite: Downloads Page

2,安装

  免安装,双击SQLiteStudio可以打开使用,如果放在项目中,建议复制到C:\Program Files (x86) ,防止被误删除掉

3,添加数据库

  数据库》添加数据库》输入数据名称》确定

4,创建数据表

  Tables》新建表

 自动生成的创建表的sql语句

1

2

3

4

5

6

7

8

CREATE TABLE SysAdmin (

    

LoginID   INTEGER      PRIMARY KEY AUTOINCREMENT

                           

DEFAULT (10000),

    

LoginName VARCHAR (20) NOT NULL,

    

LoginPwd  VARCHAR (50) NOT NULL,

    

Role      INTEGER      DEFAULT (0)

                           

NOT NULL

);

  

5,添加字段

6,数据库的位置

  数据表都创建好了之后,鼠标放在数据库名上,就显示数据库所在的目录

二、C#使用SQLite数据需要添加的引用(上面的wiki路径下载里有)

1,VS使用NuGet添加使用,搜索:System.Data.SQLite添加即可

三、代码中数据库命令操作

包含功能:增删数据库文件;增删改数据表;增删改查数据内容

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SQLite;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;

namespace MyFrom
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        // 添加数据表
        private void button1_Click(object sender, EventArgs e)
        {
            string path = Application.StartupPath + "\\test.db";
            SQLiteConnection cn = new SQLiteConnection("data source=" + path);
            //cn.Open();
            cn.Close();
            label1.Text = "添加数据库完成";
        }
        // 删除数据表
        private void button2_Click(object sender, EventArgs e)
        {
            string path = Application.StartupPath + "\\test.db";
            if (System.IO.File.Exists(path))
            {
                System.IO.File.Delete(path);
            }
            label1.Text = "删除数据库完成";
        }
        // 添加数据表
        private void button3_Click(object sender, EventArgs e)
        {
            string path = Application.StartupPath + "\\test.db";
            SQLiteConnection cn = new SQLiteConnection("data source=" + path);
            if (cn.State != System.Data.ConnectionState.Open)
            {
                cn.Open();
                SQLiteCommand cmd = new SQLiteCommand();
                cmd.Connection = cn;
                // cmd.CommandText = "CREATE TABLE t1(time string,id varchar(4),score int)";
                cmd.CommandText = "CREATE TABLE IF NOT EXISTS t1(time string,id varchar(4),score int)";
                cmd.ExecuteNonQuery();
            }
            cn.Close();
            label1.Text = "添加数据表完成";
        }
        // 删除数据表
        private void button4_Click(object sender, EventArgs e)
        {
            string path = Application.StartupPath + "\\test.db";
            SQLiteConnection cn = new SQLiteConnection("data source=" + path);
            if (cn.State != System.Data.ConnectionState.Open)
            {
                cn.Open();
                SQLiteCommand cmd = new SQLiteCommand();
                cmd.Connection = cn;
                cmd.CommandText = "DROP TABLE IF EXISTS t1";
                cmd.ExecuteNonQuery();
            }
            cn.Close();
            label1.Text = "删除数据表完成";
        }
        // 更改数据表名
        private void button5_Click(object sender, EventArgs e)
        {
            string path = Application.StartupPath + "\\test.db";
            SQLiteConnection cn = new SQLiteConnection("data source=" + path);
            if (cn.State != System.Data.ConnectionState.Open)
            {
                cn.Open();
                SQLiteCommand cmd = new SQLiteCommand();
                cmd.Connection = cn;
                cmd.CommandText = "ALTER TABLE t3 RENAME TO t1";
                cmd.ExecuteNonQuery();
            }
            cn.Close();

            label1.Text = "更改表名完成";
        }
        // 添加数据表列元素
        private void button6_Click(object sender, EventArgs e)
        {
            string path = Application.StartupPath + "\\test.db";
            SQLiteConnection cn = new SQLiteConnection("data source=" + path);
            if (cn.State != System.Data.ConnectionState.Open)
            {
                cn.Open();
                SQLiteCommand cmd = new SQLiteCommand();
                cmd.Connection = cn;
                cmd.CommandText = "ALTER TABLE t1 ADD COLUMN age int";
                cmd.ExecuteNonQuery();
            }
            cn.Close();

            label1.Text = "添加列完成";
        }
        // 添加数据
        private void button7_Click(object sender, EventArgs e)
        {
            string path = Application.StartupPath + "\\test.db";
            SQLiteConnection cn = new SQLiteConnection("data source=" + path);
            if (cn.State != System.Data.ConnectionState.Open)
            {
                cn.Open();
                SQLiteCommand cmd = new SQLiteCommand();
                cmd.Connection = cn;
                //time string,id varchar(4),score int
                cmd.CommandText = "INSERT INTO t1(time,id,score) VALUES(@time,@id,@score)";

                cmd.Parameters.Add("id", DbType.String).Value = "666";
                //cmd.Parameters.Add("age", DbType.Int32).Value = n;
                cmd.Parameters.Add("score", DbType.Int32).Value = 22;
                cmd.Parameters.Add("time", DbType.String).Value = DateTime.Now.ToString();
                cmd.ExecuteNonQuery();
            }
            cn.Close();

            label1.Text = "添加数据完成";
        }
        // 更改数据
        private void button8_Click(object sender, EventArgs e)
        {
            string s = "888";
            int n = 1077777;
            int myscore = 1;
            string path = Application.StartupPath + "\\test.db";
            SQLiteConnection cn = new SQLiteConnection("data source=" + path);
            if (cn.State != System.Data.ConnectionState.Open)
            {
                cn.Open();
                SQLiteCommand cmd = new SQLiteCommand();
                cmd.Connection = cn;
                //time string,id varchar(4),score int

                cmd.CommandText = "UPDATE t1 SET id=@id,age=@age WHERE id='666'";
                cmd.Parameters.Add("id", DbType.String).Value = s;
                cmd.Parameters.Add("age", DbType.Int32).Value = n;
                cmd.ExecuteNonQuery();

            }
            cn.Close();
            label1.Text = "更改数据完成";
        }
        // 删除数据
        private void button9_Click(object sender, EventArgs e)
        {
            string path = Application.StartupPath + "\\test.db";
            SQLiteConnection cn = new SQLiteConnection("data source=" + path);
            if (cn.State != System.Data.ConnectionState.Open)
            {
                cn.Open();
                SQLiteCommand cmd = new SQLiteCommand();
                cmd.Connection = cn;
                //time string,id varchar(4),score int

                cmd.CommandText = "DELETE FROM t1 WHERE id='888'";

                cmd.ExecuteNonQuery();

            }
            cn.Close();

            label1.Text = "删除数据完成";
        }
        // 查询数据
        private void button10_Click(object sender, EventArgs e)
        {
            string path = Application.StartupPath + "\\test.db";
            SQLiteConnection cn = new SQLiteConnection("data source=" + path);
            if (cn.State != System.Data.ConnectionState.Open)
            {
                cn.Open();
                SQLiteCommand cmd = new SQLiteCommand();
                cmd.Connection = cn;
                //time string,id varchar(4),score int

                cmd.CommandText = "SELECT * FROM t1 WHERE rowid=2";     // 读取第二行,行数从1开始
                SQLiteDataReader sr = cmd.ExecuteReader();

                Console.WriteLine("查询到的数据如下:");
                while (sr.Read())
                {
                    int count = sr.VisibleFieldCount;
                    for (int i = 0; i < count; i++)
                    {
                        Console.WriteLine(sr[i].ToString() + " ");
                    }
                    
                    string s = sr.GetString(0);
                    Console.WriteLine(s);
                }
                sr.Close();
            }
            cn.Close();

            label1.Text = "查询数据完成";
        }
    }
}

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

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

相关文章

【GPT引领前沿】GPT4技术与AI绘图

推荐阅读&#xff1a; 1、遥感云大数据在灾害、水体与湿地领域典型案例实践及GPT模型应用 2、GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术 GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。例如在科研编程…

音视频技术开发周刊 | 309

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 腾讯云音视频及边缘平台专场邀你一起见证“连接”的力量 9月7日&#xff0c;腾讯全球数字生态大会之腾讯云音视频及边缘平台专场即将开启&#xff01;本次专场将重点分享腾…

最小生成树Kruskal、Prim算法C++

什么是最小生成树 连通图&#xff1a; 在无向图中&#xff0c;若从顶点v1到顶点v2有路径&#xff0c;则称顶点v1和顶点v2是连通的。如果图中任意一对顶点都是连通的&#xff0c;则称此图为连通图。 生成树&#xff1a; 一个连通图的最小连通子图称作为图的生成树。有n个顶点的…

OceanBase 里的 schema 是什么?

李博洋 OceanBase 技术部研发工程师。 OceanBase 开源社区里经常会看到一些类似于 “ schema 是什么” 的疑问&#xff1a; 很多同学经常会误以为在 OceanBase 里&#xff0c;schema 只是 database 的同义词&#xff0c;这次分享就从 schema 是什么这个问题稍微展开聊一下。 首…

【51单片机实验笔记】声学篇(一) 蜂鸣器基本控制

目录 前言硬件介绍PWM基础蜂鸣器简介 原理图分析蜂鸣器驱动电路 软件实现蜂鸣器短鸣蜂鸣器功能封装 总结 前言 蜂鸣器在生活中的应用实则相当广泛。通过本章你将学会制造噪声 &#xff08;笑~&#xff09;你将学会驱动它们&#xff0c;并发出响声。 硬件介绍 PWM基础 占空比…

计算机竞赛 基于深度学习的人脸专注度检测计算系统 - opencv python cnn

文章目录 1 前言2 相关技术2.1CNN简介2.2 人脸识别算法2.3专注检测原理2.4 OpenCV 3 功能介绍3.1人脸录入功能3.2 人脸识别3.3 人脸专注度检测3.4 识别记录 4 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的人脸专注度…

【CPU】常见术语解释

interrupt service routine&#xff0c;ISR&#xff1a;中断服务程序。 中断&#xff1a;指当CPU正在处理某件事情时&#xff0c;外部发生的某一事件&#xff08;如一个电平的变化&#xff0c;一个脉冲沿的发生或 定时器计数溢出等&#xff09;请求CPU迅速去处理&#xff0c;于…

select多选回显问题 (取巧~)

要实现的效果&#xff1a; 实际上select选择框&#xff0c;我想要的是数组对象&#xff0c;但是后端返回来的是个字符串。 以下是解决方法&#xff1a; 以上是一种简单的解决方法~ 也可以自己处理数据。

【聚类】DBCAN聚类

OPTICS是基于DBSCAN改进的一种密度聚类算法&#xff0c;对参数不敏感。当需要用到基于密度的聚类算法时&#xff0c;可以作为DBSCAN的一种替代的优化方案&#xff0c;以实现更优的效果。 原理 基于密度的聚类算法&#xff08;1&#xff09;——DBSCAN详解_dbscan聚类_root-ca…

分类算法系列⑥:随机森林

目录 集成学习方法之随机森林 1、集成学习方法 2、随机森林 3、随机森林原理 为什么采用BootStrap抽样 为什么要有放回地抽样 4、API 5、代码 代码解释 结果 6、随机森林总结 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家…

Llama-7b-hf和vicuna-7b-delta-v0合并成vicuna-7b-v0

最近使用pandagpt需要vicuna-7b-v0&#xff0c;重新过了一遍&#xff0c;前段时间部署了vicuna-7b-v3&#xff0c;还是有不少差别的&#xff0c;transforms和fastchat版本更新导致许多地方不匹配&#xff0c;出现很多错误&#xff0c;记录一下。 更多相关内容可见Fastchat实战…

Python小知识 - 【Python】如何使用Pytorch构建机器学习模型

【Python】如何使用Pytorch构建机器学习模型 机器学习是人工智能的一个分支&#xff0c;它的任务是在已有的数据集上学习&#xff0c;最终得到一个能够解决新问题的模型。Pytorch是一个开源的机器学习框架&#xff0c;它可以让我们用更少的代码构建模型&#xff0c;并且可以让模…

docker 安装rabbitmq

前提&#xff1a;安装好docker docker安装_Steven-Russell的博客-CSDN博客 centos7安装docker_centos7 docker 安装软件_Steven-Russell的博客-CSDN博客 1、启动docker systemctl start docker 2、下载镜像 // 可以先search查询一下可用镜像&#xff0c;此处直接下载最新版本…

LinkedList(3):并发异常

1 LinkedList并发异常 package com.example.demo;import java.util.Iterator; import java.util.LinkedList;public class TestLinkedList {public static void main(String[] args) {LinkedList linkedList new LinkedList(); //双向链表linkedList.add(11);linkedList.add(…

【ES6】require、export和import的用法

在JavaScript中&#xff0c;require、export和import是Node.js的模块系统中的关键字&#xff0c;用于处理模块间的依赖关系。 1、require&#xff1a;这是Node.js中引入模块的方法。当你需要使用其他模块提供的功能时&#xff0c;可以使用require关键字来引入该模块。例如&…

docker从零部署jenkins保姆级教程

jenkins&#xff0c;基本是最常用的持续集成工具。在实际的工作中&#xff0c;后端研发一般没有jenkins的操作权限&#xff0c;只有一些查看权限&#xff0c;但是我们的代码是经过这个工具构建出来部署到服务器的&#xff0c;所以我觉着有必要了解一下这个工具的搭建过程以及简…

分布式环境下的数据同步

一般而言elasticsearch负责搜索&#xff08;查询&#xff09;&#xff0c;而sql数据负责记录&#xff08;增删改&#xff09;&#xff0c;elasticsearch中的数据来自于sql数据库&#xff0c;因此sql数据发生改变时&#xff0c;elasticsearch也必须跟着改变&#xff0c;这个就是…

数据结构与算法-插入希尔归并

一&#xff1a;排序引入 我们通常从哪几个方面来分析一个排序算法&#xff1f; 1.时间效率&#xff1a;决定了算法运行多久&#xff0c;O&#xff08;1&#xff09; 2.空间复杂度&#xff1a; 3.比较次数&交换次数:排序肯定会牵涉到两个操作&#xff0c;一个比较是肯定的。…

mac常见问题(五) Mac 无法开机

在mac的使用过程中难免会碰到这样或者那样的问题&#xff0c;本期为您带来Mac 无法开机怎么进行操作。 1、按下 Mac 上的电源按钮。每台 Mac 电脑都有一个电源按钮&#xff0c;通常标有电源符号 。然后检查有没有通电迹象&#xff0c;例如&#xff1a; 发声&#xff0c;例如由风…

springmvc5.x-mvc实现原理及源码实现

上文&#xff1a;spring5.x-声明式事务原理及源码实现 系列文章&#xff1a; spring5.x-声明式事务原理及源码实现 spring5.x-AOP实现原理及源码分析 spring5.x-监听器原理及源码实现 spring5.x-解决循环依赖分析 spring5.x-IOC模块源码学习 spring5.x介绍及搭配spring源码阅读…