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 ...
随机推荐
- pip 国内源地址
1.使用方式 pip install 包名 -i 国内源地址 2.国内源地址 豆瓣(douban) http://pypi.douban.com/simple/ 清华大学 https://pypi. ...
- 性能_1 Jmeter脚本编写
一.万能法 先把项目启动 打开项目接口文档,接口文档: 一般是开发 特别注意事项:当你的接口请求参数为json格式时,一定要写请求头,请求头中一定要有 Content-Type: applicatio ...
- Golang每日一库之regex
本文地址: https://www.cnblogs.com/zichliang/p/17387436.html Golang日库合集:https://www.cnblogs.com/zichliang ...
- #Powerquery pq从入门到精通,笔记梳理
详细视频可以B站搜索,ms_excel博主,看leila的视频翻译课,powerquery从入门到精通. 后续也会根据自己工作来更新这部分的实际用法.
- 2020-10-24:go中channel的recv流程是什么?
福哥答案2020-10-24: ***[评论](https://user.qzone.qq.com/3182319461/blog/1603496305)
- 2021-02-15:给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿。但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。请返回最后获胜者的分数。
2021-02-15:给定一个整型数组arr,代表数值不同的纸牌排成一条线.玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿.但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪 ...
- 2022-02-06:等差数列划分 II - 子序列。 给你一个整数数组 nums ,返回 nums 中所有 等差子序列 的数目。 如果一个序列中 至少有三个元素 ,并且任意两个相邻元素之差相同,则称
2022-02-06:等差数列划分 II - 子序列. 给你一个整数数组 nums ,返回 nums 中所有 等差子序列 的数目. 如果一个序列中 至少有三个元素 ,并且任意两个相邻元素之差相同,则称 ...
- 【Java】GridBagLayout布局笔记
参考博客: 样例解释:https://blog.csdn.net/wstz_5461/article/details/78067176 参数解释:https://blog.csdn.net/shiSh ...
- Python异步编程之web框架 异步vs同步 数据库IO任务压测对比
测试基本信息 主题:比较异步框架和同步框架在数据库IO操作的性能差异 python版本:python 3.8 数据库:mysql 8.0.27 (docker部署) 压测工具:locust web框架 ...
- vue3实现H5网页录音并上传(mp3、wav)兼容Android、iOS和PC端
使用 Recorder插件 可以在HTML5网页中进行录音,录音完成后得到blob文件对象,然后将blob上传到服务器:项目使用的vue3.0版本(这个插件同时支持vue2.0.也支持uniapp,很 ...