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 ...
随机推荐
- 终端命令行前出现(base)
原因 (base) 的出现是因为电脑安装了conda后,每次打开终端都会自动启动conda的base环境 解决 取消自动启动base环境:conda config --set auto_activat ...
- 【Vue3】引入组件Failed to resolve component: MyButton If this is a native custom element
引入组件时页面上并没有出现组件的影子,其他元素正常,初步确定是组件引入部分语法出了问题,打开开发者工具看到控制台报出错误代码: Failed to resolve component: MyButto ...
- 面试精灵:Java后端靠谱、强大的面试题网站(稳拿offer)
面试精灵:一个给力的Java后端面试题网站. 网址:https://offer.skyofit.com 这套题真实.高频.全面.有详细答案.保你稳过面试,让你成为offer收割机.题目包括:Java ...
- 2022-09-30:以下go语言代码输出什么?A: true true false true false; B: true false false true false; C: true true
2022-09-30:以下go语言代码输出什么?A: true true false true false: B: true false false true false: C: true true ...
- 2022-08-04:输入:去重数组arr,里面的数只包含0~9。limit,一个数字。 返回:要求比limit小的情况下,能够用arr拼出来的最大数字。 来自字节。
2022-08-04:输入:去重数组arr,里面的数只包含0~9.limit,一个数字. 返回:要求比limit小的情况下,能够用arr拼出来的最大数字. 来自字节. 答案2022-08-04: 从左 ...
- 2020-12-06:mysql中,多个索引会有多份数据吗?
福哥答案2020-12-06: 数据不会有多份,索引有几个就有几份.聚簇索引存数据和索引,非聚簇索引存索引,聚簇索引只有一个,非聚簇索引可以有多个.
- 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 中所有 等差子序列 的数目. 如果一个序列中 至少有三个元素 ,并且任意两个相邻元素之差相同,则称 ...
- 2021-05-22:假设所有字符都是小写字母, 大字符串是str,arr是去重的单词表, 每个单词都不是空字符串且可以使用任意次。使用arr中的单词有多少种拼接str的方式。 返回方法数。
2021-05-22:假设所有字符都是小写字母, 大字符串是str,arr是去重的单词表, 每个单词都不是空字符串且可以使用任意次.使用arr中的单词有多少种拼接str的方式. 返回方法数. 福大大 ...
- 2021-06-23:给定一个数组arr,代表每个人的能力值。再给定一个非负数k,如果两个人能力差值正好为k,那么可以凑在一起比赛。一局比赛只有两个人,返回最多可以同时有多少场比赛。
2021-06-23:给定一个数组arr,代表每个人的能力值.再给定一个非负数k,如果两个人能力差值正好为k,那么可以凑在一起比赛.一局比赛只有两个人,返回最多可以同时有多少场比赛. 福大大 答案20 ...