SQLite入门指南:轻松学习带有实例的完整教程(含示例)
SQLite官网:https://www.sqlite.org/index.html
源视频教程:https://www.bilibili.com/video/BV1Zz411i78o
菜鸟教程文档:https://www.runoob.com/sqlite/sqlite-tutorial.html
一、数据库简介与基本语法
1.1-数据库的作用
- txt去保存1万行的数据.(数据量超过一定量级[ 大于1w ])
- 数据格式的管理,以及数据内容的分片
1.2-数据库的选择
- 目前所说:都是SQL(结构化查询语言)语句
- 单机版本:
- ACCESS(微软)
- 最大缺点:必须要安装Office、数据量、查询速度、写法有少许不同
- SQLite
- 唯一携带一个DLL驱动文件(几百K)
- 缺点:超过10w的,不建议使用。
- ACCESS(微软)
- 企业级数据库:
- MsSQLServer
- 数据量:5000w没什么问题
- 最适合C#
- My SQL:
- 要一份非.net官方的驱动
- 开源
- 相对于MSSQL Server,优势是体积小,跨平台
- Oracle:
- 需要非官方驱动
- 适合JAVA
- MongDB:
- 后期支秀
- 非关系型数据库
- MsSQLServer
二、数据库增删改查语法与实例
2.1-创建表
(1)下载并打开这个工具

(2)创建一个数据库,然后创建一个表如下:

(3)添加列明、数据类型、约束

2.2-增删改查
--插入
--注意:Integer允许自动增长(不要被Identity 忽悠)
insert into UserInfo(UserId,UserNames,UserPasss,RegDate) values(1001,'admin','admin','2021-01-21')
insert into UserInfo(UserId,UserNames,UserPasss,RegDate) values(1002,'sanha','sanha', datetime('now','localtime'))
--查询
select * from UserInfo
--Limit 跳过几个,取几个
--Limit 2,2 跳过2个,取2个
--删除
delete from UserInfo where UserId=1002
--修改
update UserInfo set UserNames='sanha_update' where UserId=1002
2.3-使用WinForm和SQLite做登录注册
(1)管理Nuget程序包,下载这个类库:

1.1-将数据库文件拷贝在Bin路径下。


(2)写一个SQLite帮助类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SQLite;
using System.Threading.Tasks;
using System.Configuration;
namespace SQLite
{
public class SQLiteHelper
{
private readonly string _str;
public SQLiteHelper(string str) {
_str = str;
}
//获取连接字符串
//private static readonly string str = ConfigurationManager.ConnectionStrings["DBFilerURL"].ConnectionString;
/// <summary>
/// 做增删改的功能
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="ps">SQL语句中的参数</param>
/// <returns>受影响的行数</returns>
public int ExecuteNonQuery(string sql, params SQLiteParameter[] ps)
{
//连接数据库
using (SQLiteConnection con = new SQLiteConnection(_str))
{
using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
{
con.Open();//打开数据库
if (ps != null)
{
cmd.Parameters.AddRange(ps);//参数,加集合(ps)
}
return cmd.ExecuteNonQuery();
}
}
}
/// <summary>
/// 查询首行首列
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="ps">SQL语句的参数</param>
/// <returns>返回首行首列object</returns>
public object ExecuteScalar(string sql, params SQLiteParameter[] ps)
{
using (SQLiteConnection con = new SQLiteConnection(_str))
{
using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
{
con.Open();
if (ps != null)
{
cmd.Parameters.AddRange(ps);
}
return cmd.ExecuteScalar();
}
}
}
/// <summary>
/// 查询多行
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="ps">SQL语句的参数</param>
/// <returns>返回多行SQLiteDataReader</returns>
public SQLiteDataReader ExecuteReader(string sql, params SQLiteParameter[] ps)
{
SQLiteConnection con = new SQLiteConnection(_str);
using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
{
if (ps != null)
{
cmd.Parameters.AddRange(ps);
}
try
{
con.Open();
return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
con.Close();
con.Dispose();
throw ex;
}
}
}
/// <summary>
/// 查询数据表
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="ps">SQL语句中的参数</param>
/// <returns>返回表DataTable</returns>
public DataTable ExecuteTable(string sql, params SQLiteParameter[] ps)
{
DataTable dt = new DataTable();
using (SQLiteDataAdapter sda = new SQLiteDataAdapter(sql, _str))
{
if (ps != null)
{
sda.SelectCommand.Parameters.AddRange(ps);
}
sda.Fill(dt);
return dt;
}
}
}
}
(3)写一个简单的界面

(4)在后端代码中先写上这些代码
//获取数据库路径
public static string SQLitePath = AppDomain.CurrentDomain.BaseDirectory + "db/SQLiteDemo1.db";
//数据库连接字符串
public static string str = string.Format("Data Source={0};Pooling=true;FailIfMissing=false;", SQLitePath);
//实例化对象
SQLiteHelper SQLite = new SQLiteHelper(str);
(5)【登录】的逻辑
private void button2_Click(object sender, EventArgs e)
{
string name = this.textBox1.Text.ToString();
string password = this.textBox2.Text.ToString();
//参数化查询
string sql = string.Format("select UserId from UserInfo where UserNames=@name and UserPasss=@password;");
SQLiteParameter[] parameters =new SQLiteParameter[]
{
new SQLiteParameter("@name",name),
new SQLiteParameter("@password",password)
};
object obj=SQLite.ExecuteScalar(sql, parameters);
int i =Convert.ToInt32(obj);
if (i > 0)
{
this.label4.Text = "登录成功!";
this.label4.Show();
}
else {
this.label4.Text = "登录失败!";
this.label4.Show();
}
}
(6)【注册】的逻辑
private void button1_Click(object sender, EventArgs e)
{;
string name = this.textBox1.Text.ToString();
string password = this.textBox2.Text.ToString();
//参数化查询
string sql = string.Format("insert into UserInfo(UserId,UserNames,UserPasss,RegDate) values(@userid,@username,@passwod,datetime('now','localtime'))");
SQLiteParameter[] parameters = new SQLiteParameter[]
{
new SQLiteParameter("@userid",new Random().Next(10)),
new SQLiteParameter("@username",name),
new SQLiteParameter("@passwod",password)
};
object obj = SQLite.ExecuteNonQuery(sql, parameters);
int i = Convert.ToInt32(obj);
if (i > 0)
{
this.label4.Text = "注册成功!";
this.label4.Show();
}
else
{
this.label4.Text = "注册失败!";
this.label4.Show();
}
}
SQLite入门指南:轻松学习带有实例的完整教程(含示例)的更多相关文章
- [入门指南]-技术学习-Ebean
占坑 官网
- Ext JS 6学习文档–第1章–ExtJS入门指南
Ext JS 入门指南 前言 本来我是打算自己写一个系列的 ExtJS 6 学习笔记的,因为 ExtJS 6 目前的中文学习资料还很少.google 搜索资料时找到了一本国外牛人写的关于 ExtJS ...
- 轻松学习Linux之用户账户管理及实例
Linux用户管理基础 (下载清晰视频:http://down.51cto.com/data/158699) 轻松学习Linux之用户账户管理的实例-跨硬盘移动数据 (此处视频不清楚下按下面地址下载清 ...
- node.js Web应用框架Express入门指南
node.js Web应用框架Express入门指南 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-28 我要评论 这篇文章主要介绍了node.js Web应用框架Express入门 ...
- Blazor 组件入门指南
翻译自 Waqas Anwar 2021年3月19日的文章 <A Beginner's Guide to Blazor Components> [1] Blazor 应用程序是组件的组合, ...
- 《转载》编程入门指南 v1.4
编程入门指南 v1.4 Badger · 8 个月前 作者:@萧井陌, @Badger 自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 CoCode ...
- pytorch 入门指南
两类深度学习框架的优缺点 动态图(PyTorch) 计算图的进行与代码的运行时同时进行的. 静态图(Tensorflow <2.0) 自建命名体系 自建时序控制 难以介入 使用深度学习框架的优点 ...
- 【译】JWT(JSON Web Token) 入门指南
JWT 入门指南 原文地址:https://blog.angular-university.io/angular-jwt/ 这篇文章是两篇手把手教你如何在Angular应用(也适用于企业级应用)中实现 ...
- 一、neo4j中文文档-入门指南
目录 neo4j中文文档-入门指南 Neo4j v4.4 neo4j **Cypher ** 开始使用 Neo4j 1. 安装 Neo4j 2. 文档 图数据库概念 1. 示例图 2.节点 3. 节点 ...
- 【翻译】Fluent NHibernate介绍和入门指南
英文原文地址:https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started 翻译原文地址:http://www.cnblogs ...
随机推荐
- YOLO4论文中文版
文章目录 YOLO4论文中文版 摘要 1.介绍 2.相关工作 2.1.目标检测模型 2.2.Bag of freebies 2.3.Bag of specials 3.方法 3.1.架构选择 3.2. ...
- 2022-10-08:以下go语言代码输出什么?A、0 0;B、0 4;C:4 0;D:4 4。 package main const s = “Go101.org“ // len(s) == 9
2022-10-08:以下go语言代码输出什么?A.0 0:B.0 4:C:4 0:D:4 4. package main const s = "Go101.org" // len ...
- 2021-08-28:给定一个正数数组arr,长度一定大于6(>=7),一定要选3个数字做分割点,从而分出4个部分,并且每部分都有数,分割点的数字直接删除,不属于任何4个部分中的任何一个。 返回有没有
2021-08-28:给定一个正数数组arr,长度一定大于6(>=7),一定要选3个数字做分割点,从而分出4个部分,并且每部分都有数,分割点的数字直接删除,不属于任何4个部分中的任何一个. 返回 ...
- Selenium - 元素定位(1) - 八种元素定位
Selenium - 元素定位 八种元素定位 我们在做WEB自动化时,最根本的就是操作页面上的各种元素,而操作的基础便是元素的定位,只有准确地定位到唯一元素才能进行后续的自动化控制,下面将对各种元素定 ...
- Jenkins - 安装部署
Jenkins安装部署 简介 Jenkins是一个开源的软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,提供一个开放易用的软件平台,使软件的持续集成变成可能. 主要用于: 持续 ...
- Django4全栈进阶之路18 项目实战(用户管理):user_edit.html用户编辑画面设计
1.模块 {% extends 'base.html' %} {% block content %} <!-- 编辑用户表单 --> <div class="card mt ...
- F对象和Q对象
F对象 批量计算 Q对象,与或非
- ET介绍—— 一切皆实体的设计
一切皆实体 目前十分流行ECS设计,主要是守望先锋的成功,引爆了这种技术.守望先锋采用了状态帧这种网络技术,客户端会进行预测,预测不准需要进行回滚,由于组件式的设计,回滚可以只回滚某些组件即可.ECS ...
- 蓝桥杯真题 k倍区间
考点: - 利用前缀和求子列和 - 同余作差是模的倍数 题目概要 给定一个长度为N的数列,A1, A2, - AN,如果其中一段连续的子序列Ai, Ai+1, - Aj(i <= j)之和是K的 ...
- remote: HTTP Basic:Access denied fatal:Authentication failed for
近来在一天新电脑上面使用git pull 一个项目,老是提示 Access denied, 找了许多方法,ssh key这些都配置了还是不行,当时别提有多尬 看嘛这就是pull 时的提示 // *** ...