C#查询sqlite当天记录出错

我用C#连接了sqlite数据库,想查询日期字段StadyDate为当天(今天)的记录。
日期最好格式化为类似2000/01/01这种格式
我写代码如下:

string riqi = DateTime.Now.Date.ToString("yyyy/MM/dd");
conn.Open();
       string commandText = "select * from pacs_study where StudyDate=riqi order by StudyID desc";
     SQLiteDataAdapter sQLiteDataAdapter = new SQLiteDataAdapter(commandText, conn);

运行总提示错误,如下
System.Data.SQLite.SQLiteException:“SQLite error
no such column: riqi”
请问sql查询语句该如何写?

在SQL语句中,riqi是一个字符串而不是一个变量,需要将变量riqi插入到SQL语句中。可以通过使用字符串插值或者字符串连接来实现,下面是两种方式的示例代码:

  1. 使用字符串插值
string riqi = DateTime.Now.Date.ToString("yyyy/MM/dd");
conn.Open();
string commandText = $"select * from pacs_study where StudyDate='{riqi}' order by StudyID desc";
SQLiteDataAdapter sQLiteDataAdapter = new SQLiteDataAdapter(commandText, conn);
  1. 使用字符串连接
string riqi = DateTime.Now.Date.ToString("yyyy/MM/dd");
conn.Open();
string commandText = "select * from pacs_study where StudyDate='" + riqi + "' order by StudyID desc";
SQLiteDataAdapter sQLiteDataAdapter = new SQLiteDataAdapter(commandText, conn);

方案来自 梦想橡皮擦 狂飙组基于 GPT 编写的 “程秘”


在你的查询语句中,riqi是一个字符串变量,而你想要使用它作为查询条件,需要在语句中把它替换成实际的值。可以使用字符串拼接的方式将 riqi 变量的值插入到 SQL 语句中。修改后的代码如下:

string riqi = DateTime.Now.Date.ToString("yyyy/MM/dd");
conn.Open();
string commandText = "select * from pacs_study where StudyDate='" + riqi + "' order by StudyID desc";
SQLiteDataAdapter sQLiteDataAdapter = new SQLiteDataAdapter(commandText, conn);

在这里,riqi 变量的值通过字符串拼接插入到了查询语句中,形成了 where StudyDate='yyyy/MM/dd' 的形式,这样就可以查询出日期字段为今天的记录了。

注意,为了避免 SQL 注入等安全问题,建议使用参数化查询的方式来执行 SQL 语句,而不是直接拼接字符串。可以使用 SQLiteCommand 对象来实现参数化查询。