You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C# System.Data.SQLite插入数据时遇SQL逻辑错误求助

解决SQLite插入数据时的SQL语法错误问题

你遇到的SQL logic error near "hpi_caseid": syntax error错误,核心原因是INSERT语句的语法不符合SQL标准,下面一步步帮你解决:

1. 修正INSERT语句的语法

你的原插入语句缺少了必要的括号,导致SQLite无法正确解析列名和值的对应关系:

原错误代码:

cnn.Execute("INSERT INTO CasesData hpi_caseid VALUES @hpi_caseid", CasesData);

修正后的正确语句:

cnn.Execute("INSERT INTO CasesData (hpi_caseid) VALUES (@hpi_caseid)", CasesData);

为什么这样改?

SQL的INSERT语法规则要求:

  • 如果指定要插入的列名,必须用()将列名包裹起来
  • VALUES子句中的参数也需要用()包裹,明确标识这是一个值集合

缺少这些括号会让SQLite引擎误解语句结构,直接触发语法错误。

2. 修正App.config中的Provider配置

你的连接字符串里使用了System.Data.SqlClient作为providerName,这是针对SQL Server的驱动,SQLite需要使用专门的驱动:

原错误配置:

<add name="Default" connectionString="Data Source=C:\Users\mansourm\Documents\Visual Studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\hptest.db; Version=3;" providerName="System.Data.SqlClient"/>

修正后:

<add name="Default" connectionString="Data Source=C:\Users\mansourm\Documents\Visual Studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\hptest.db; Version=3;" providerName="System.Data.SQLite"/>

虽然这个配置错误不是当前语法错误的直接原因,但后续可能会引发连接或操作异常,建议提前修正。

3. (推荐)优化CaseModel的结构

你的CaseModel使用了公共字段,虽然Dapper可以识别,但.NET开发中更推荐使用属性来封装数据,这样能避免潜在的映射问题:

原代码:

public class CaseModel {
    public long hpi_caseid;
}

优化后:

public class CaseModel {
    public long hpi_caseid { get; set; }
}

完成以上修改后,重新运行代码,应该就能成功插入数据了。

内容的提问来源于stack exchange,提问作者Mehdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 11:52:50