• SQLite 常用功能整合


    目录

    SQLite 日期、时间 比较方法

    SQLite 提示错误:SQLite error near “@table“: syntax error

    SQL 创建表,ID设置key,并自增

    SQLite 查询最大值,返回整行数据

    SQLite 添加索引


    SQLite 日期、时间 比较方法

    一、新建表

    下面用的软件是 Navicat 15 for SQLite

    新建一个测试用的表 test,添加两个字段,id,myTimer,myTimer 的格式用 datetimer

    二、插入数据

    查询当前时间

    SELECT DATETIME('now','localtime')

    结果:

    知道了如何获取当前的时间,我们向test表中插入数据

    INSERT INTO test(myTimer) VALUES(DATETIME('now','localtime'))

    随便生成几条数据,为了后面的查询,如下:

    三、 比较时间

    1.查询大于 2022-02-22 16:45:59 的数据

    SELECT * FROM test WHERE myTimer > '2022-02-22 16:45:59'

    运行:

    可以看到,查询结果是对的。

    有时候,需要注意的是,用 Where 后的查询条件用“2022-02-22 12:00:00”这种格式作为比较,也会出现异常,查出来的结果全是乱七八糟的,完全与 Where 中的条件不符合,可以查看我的帖子:点击跳转

    在C#上显示时间时,可以用下面的格式:

    DateTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));

    显示就和上图一样

    SQLite 提示错误:SQLite error near “@table“: syntax error

    在之前写的C#操作SQLite帖子中,我发现有时候运行会出现下面的错误:

    SQLite error near "@table": syntax error

    出现错误的代码如下:

    1. public static Tuple<bool, DataSet, string> GetBarcode(string barcode)
    2. {
    3. if (string.IsNullOrEmpty(barcode))
    4. {
    5. return new Tuple<bool, DataSet, string>(false, null, "传递的参数不能为空");
    6. }
    7. string sql = "SELECT * FROM @table WHERE Barcode = @barcode";
    8. SQLiteParameter[] parameter = new SQLiteParameter[]
    9. {
    10. new SQLiteParameter("table", "数据库表名"),
    11. new SQLiteParameter("barcode", barcode)
    12. };
    13. return SQLiteHelpers.ExecuteDataSet(sql, parameter);
    14. }

    SQLiteHelpers 的脚本看我之前帖子:点击跳转

    解决方法:

    我发现,数据库表名不能加入到 SQLiteParameter 参数列表中,其他的列名是没问题的,SQL语句改用字符串连接方式就不会报错了,如下:

    1. public static Tuple<bool, DataSet, string> GetBarcode(string barcode)
    2. {
    3. if (string.IsNullOrEmpty(barcode))
    4. {
    5. return new Tuple<bool, DataSet, string>(false, null, "传递的参数不能为空");
    6. }
    7. string sql = string.Format("SELECT * FROM {0} WHERE Barcode = @barcode", "数据库表名");
    8. SQLiteParameter[] parameter = new SQLiteParameter[]
    9. {
    10. new SQLiteParameter("barcode", barcode)
    11. };
    12. return SQLiteHelpers.ExecuteDataSet(sql, parameter);
    13. }

    SQL 创建表,ID设置key,并自增

    sql 语句如下:

    1. CREATE TABLE user
    2. (
    3. ID integer PRIMARY KEY AUTOINCREMENT,
    4. UserName text NOT NULL,
    5. Age int NOT NULL
    6. )

    SQLite 查询最大值,返回整行数据

    查询最大值

    SELECT MAX(列名) FROM 表名

    查询最大值,返回整行数据

    SELECT * FROM 表名 WHERE 列名= (SELECT MAX(列名) FROM 表名) LIMIT 1;

    SQLite 添加索引

     打开 SQLite Studio,新建一个表student,添加几个字段:id、name、age、address

    点击 Create index

    就会打开下面界面

    Sort(排序)

    ASC 表示升序

    DESC 表示降序

    在排序规则这里

    Collation(排序规则)

    RTRIM      清除字符串结尾空格符

    NOCASE     禁用大小写区分

    BINARY     二进制

    SQL语句:

    例1 

    1. CREATE INDEX findName ON student (
    2. name COLLATE BINARY ASC
    3. );

    COLLATE 是排序规则

    例2

    1. CREATE INDEX findTestTime ON sampleRecord (
    2. TestTime ASC
    3. );

    findTestTime 是索引名,

    sampleRecord 是表名,

    TestTime 是字段名,

    ASC 代表升序

    end

  • 相关阅读:
    json和文件操作
    重装系统后,MySQL install错误,找不到dll文件,或者应用程序错误
    SpringAOP的原理及仿写
    C#悬浮窗口 图像背景
    Three.js本地环境搭建
    动态链接库搜索顺序
    Mac终端首行显示特定字符便于查看
    每日一题 136. 只出现一次的数字(简单,位运算)
    简单的个人博客网站设计 静态HTML个人博客主页 DW个人网站模板下载 大学生简单个人网页作品代码 个人网页制作 学生个人网页设计作业
    Vue自定义指令实现按钮级的权限控制
  • 原文地址:https://blog.csdn.net/qq_38693757/article/details/125993756