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

出现错误的代码如下:

public static Tuple<bool, DataSet, string> GetBarcode(string barcode)
{
    if (string.IsNullOrEmpty(barcode))
    {
        return new Tuple<bool, DataSet, string>(false, null, "传递的参数不能为空");
    }

    string sql = "SELECT * FROM @table WHERE Barcode = @barcode";
    SQLiteParameter[] parameter = new SQLiteParameter[]
    {
        new SQLiteParameter("table", "数据库表名"),
        new SQLiteParameter("barcode", barcode)
    };
    return SQLiteHelpers.ExecuteDataSet(sql, parameter);
}

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

解决方法:

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

public static Tuple<bool, DataSet, string> GetBarcode(string barcode)
{
    if (string.IsNullOrEmpty(barcode))
    {
        return new Tuple<bool, DataSet, string>(false, null, "传递的参数不能为空");
    }

    string sql = string.Format("SELECT * FROM {0} WHERE Barcode = @barcode", "数据库表名");
    SQLiteParameter[] parameter = new SQLiteParameter[]
    {
        new SQLiteParameter("barcode", barcode)
    };
    return SQLiteHelpers.ExecuteDataSet(sql, parameter);
}

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

sql 语句如下:


CREATE TABLE user
(
	ID 				integer 	PRIMARY KEY AUTOINCREMENT, 
    UserName        text        NOT NULL,
    Age             int         NOT NULL
)

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 

CREATE INDEX findName ON student (
	name COLLATE BINARY ASC
);

COLLATE 是排序规则

例2

CREATE INDEX findTestTime ON sampleRecord (
	TestTime ASC
);

findTestTime 是索引名,

sampleRecord 是表名,

TestTime 是字段名,

ASC 代表升序

end

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊思宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值