【问题标题】:SqLite with C#: unrecognized token: "xxxxxxxx-xxx..."带有 C# 的 SqLite:无法识别的令牌:“xxxxxxxx-xxx...”
【发布时间】:2022-06-17 22:55:36
【问题描述】:

所以我正在使用 System.Data.SQLite 库,从数据库中将一些数据本地存储在我的电脑上。问题是虽然有两个列条目,它们是 GUID(定义如下的唯一 ID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。当他遇到第一个“-”字符时,编译器总是会抛出错误。我知道 DATE 使用 YYYY-MM-DD 语法,例如会不会,这会以某种方式发生冲突?

这是代码行:

sqlString = $"insert into completelocalmessages (Date, Sender, Message, Receiver, ID) values({message.Date.Year}-{message.Date.Month}-{message.Date.Day}, {message.From.ToString()}, {message.Message}, {message.To.ToString()}, {message.ID})";

Date 是 Date 类型,Sender 和 receiver 是 GUID,Message 是字符串,ID 是整数。 该表是这样定义的:

sqlString = "create table completelocalmessages (Date date, Sender Text(30), Message Text(400), Receiver Text(30), ID int)";

【问题讨论】:

  • 您需要在文本和日期值周围使用单引号。此外,在字符串插值中使用 ToString() 是多余的,不需要。
  • guid 字段在哪里?同样通常在原始 sql 日期和字符串(以及存储为字符串的 guid!)中必须用单引号括起来 - 如果您只是输入 2022-01-01 它可能应该是 '2022-01-01' - 通常最好使用参数化查询,如果您有时间研究的话。

标签: c# sqlite system.data.sqlite


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
  • 2018-10-29
  • 2016-11-25
  • 1970-01-01
相关资源
最近更新 更多