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

C#操作SQLite执行SELECT语句时触发SQL逻辑错误求助

解决SQLite LIKE查询语法错误及SQL注入问题
  • 错误原因:你拼接的SQL语句存在语法错误,当输入't'时,实际生成的SQL是:

    SELECT * FROM Customers WHERE name like ''t
    

    这里字符串没有正确闭合,而且LIKE查询缺少通配符,导致SQL解析报错。另外直接拼接用户输入还会引发SQL注入风险,绝对不能这么写。

  • 正确解决方法:使用参数化查询
    参数化查询能自动处理字符串闭合,同时避免SQL注入,代码修改如下:

    // 构造带参数的SQL语句,%是LIKE的通配符,匹配任意字符
    string sqlQuery = "SELECT * FROM Customers WHERE name LIKE @Name";
    SQLiteCommand sqlCmd = new SQLiteCommand(sqlQuery, m_dbConnection);
    // 添加参数,值为带通配符的用户输入
    sqlCmd.Parameters.AddWithValue("@Name", $"%{textBox1.Text}%");
    // 执行查询并绑定到DataGridView
    SQLiteDataReader reader = sqlCmd.ExecuteReader();
    DataTable dt = new DataTable();
    dt.Load(reader);
    dataGridView1.DataSource = dt;
    
  • 额外说明:

    • % 是SQLite LIKE查询的通配符,%t% 表示匹配包含't'的所有name值;如果要匹配以't'开头的内容用 t%,以't'结尾用 %t。
    • 参数化查询会自动处理字符串的引号转义,不会出现语法错误,同时能防止恶意用户输入破坏数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:45:41