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的,不建议使用。
  • 企业级数据库:
    • MsSQLServer

      • 数据量:5000w没什么问题
      • 最适合C#
    • My SQL:
      • 要一份非.net官方的驱动
      • 开源
      • 相对于MSSQL Server,优势是体积小,跨平台
    • Oracle:
      • 需要非官方驱动
      • 适合JAVA
    • MongDB:
      • 后期支秀
      • 非关系型数据库

二、数据库增删改查语法与实例

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入门指南:轻松学习带有实例的完整教程(含示例)的更多相关文章

  1. [入门指南]-技术学习-Ebean

    占坑 官网

  2. Ext JS 6学习文档–第1章–ExtJS入门指南

    Ext JS 入门指南 前言 本来我是打算自己写一个系列的 ExtJS 6 学习笔记的,因为 ExtJS 6 目前的中文学习资料还很少.google 搜索资料时找到了一本国外牛人写的关于 ExtJS ...

  3. 轻松学习Linux之用户账户管理及实例

    Linux用户管理基础 (下载清晰视频:http://down.51cto.com/data/158699) 轻松学习Linux之用户账户管理的实例-跨硬盘移动数据 (此处视频不清楚下按下面地址下载清 ...

  4. node.js Web应用框架Express入门指南

    node.js Web应用框架Express入门指南 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-28 我要评论 这篇文章主要介绍了node.js Web应用框架Express入门 ...

  5. Blazor 组件入门指南

    翻译自 Waqas Anwar 2021年3月19日的文章 <A Beginner's Guide to Blazor Components> [1] Blazor 应用程序是组件的组合, ...

  6. 《转载》编程入门指南 v1.4

    编程入门指南 v1.4 Badger · 8 个月前 作者:@萧井陌, @Badger 自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 CoCode ...

  7. pytorch 入门指南

    两类深度学习框架的优缺点 动态图(PyTorch) 计算图的进行与代码的运行时同时进行的. 静态图(Tensorflow <2.0) 自建命名体系 自建时序控制 难以介入 使用深度学习框架的优点 ...

  8. 【译】JWT(JSON Web Token) 入门指南

    JWT 入门指南 原文地址:https://blog.angular-university.io/angular-jwt/ 这篇文章是两篇手把手教你如何在Angular应用(也适用于企业级应用)中实现 ...

  9. 一、neo4j中文文档-入门指南

    目录 neo4j中文文档-入门指南 Neo4j v4.4 neo4j **Cypher ** 开始使用 Neo4j 1. 安装 Neo4j 2. 文档 图数据库概念 1. 示例图 2.节点 3. 节点 ...

  10. 【翻译】Fluent NHibernate介绍和入门指南

    英文原文地址:https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started 翻译原文地址:http://www.cnblogs ...

随机推荐

  1. 2020-01-16:我截获了登录token的话,是不是就获得了登录状态,这样就不安全了。如何保证安全?

    福哥答案2020-01-06:[知乎答案:](https://www.zhihu.com/question/439602796)首先,Token 一般放在 Header 或者 Cookies 中,Ht ...

  2. Casdoor 开始

    Casdoor 是一个基于 OAuth 2.0 / OIDC 的中心化的单点登录(SSO)身份验证平台,简单来说,就是 Casdoor 可以帮你解决用户管理的难题,你无需开发用户登录.注册等与用户鉴权 ...

  3. 近期SQL优化实战分享

    分享一下本周SQL优化的两个场景. 如果能对读者有一定的启发,共同探讨,不胜荣幸. 版本信息:mysql,5.7.19 引擎: innodb 场景1 我们有一张常口表,里面的数据由各种数据源合并而来, ...

  4. RWKV – transformer 与 RNN 的强强联合

    在 NLP (Natural Language Processing, 自然语言处理) 领域,ChatGPT 和其他的聊天机器人应用引起了极大的关注.每个社区为构建自己的应用,也都在持续地寻求强大.可 ...

  5. 解决org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource **/**/dao/**Mapper.xml问题

    1. 问题分析 出现此问题的原因是资源过滤的问题,编写在DAO包中的XML文件没有被打包. 2. 解决方案 在pom.xml文件中加入如下资源过滤: <!-- 静态资源导出问题 --> & ...

  6. 拥抱jsx,开启vue3用法的另一种选择🔥🔥

    背景 公司高级表单组件ProForm高阶组件都建立在jsx的运用配置上,项目在实践落地过程中积累了丰富的经验,也充分感受到了jsx语法的灵活便捷和可维护性强大,享受到了用其开发的乐趣,独乐乐不如众乐乐 ...

  7. SpringBoot开发简单接口流程

    SpringBoot开发接口 初始化 新建项目 (1)使用 IDEA 的过程,新建Project,左侧选 Spring Initializr,点Next (2)选 8 版本,点Next (3)左侧选择 ...

  8. std::aligned_alloc

    定义于头文件 <cstdlib> (c++) void * aligned_alloc ( std::size_t alignment, std::size_t size); (c++17 ...

  9. 【HarmonyOS】一文教你如何在H5页面中使用电话、定位及导航

    ​[关键字] HarmonyOS.H5页面.拨打电话.获取系统定位.跳转高德地图导航 [1.写在前面] 上一篇中我们带领大家实现了一个在低码项目中跳转加载H5页面的功能,有兴趣的可以参考以下文章: h ...

  10. 如何通过数据warehouse更好地支持企业数字化转型战略

    目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 5. 优化与改进 <如何通过数据 warehouse 更好地支持企业数字化转型战略> 随着企业数 ...