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

求助:向SQLite添加第二个/第三个文件名时触发InvalidOperationException异常

解决SQLite插入时的InvalidOperationException异常

首先看你代码里的SQL语句,这里有个明显的语法错误:

kom.CommandText = "insert into test(name) values('" + name + "'')";

结尾的地方多写了一个单引号,应该是'" + name + "',多余的单引号会导致SQL语法无效,这就是触发InvalidOperationException的直接原因。

不过更重要的是,直接拼接字符串生成SQL语句是非常不好的习惯——不仅容易出现这类语法错误,还会带来SQL注入的安全风险,比如如果用户输入的文件名里包含单引号(比如O'Neil.txt),拼接后的SQL会直接报错。

推荐你使用参数化查询来解决这两个问题,修复后的代码如下:

private void button1_Click(object sender, EventArgs e)
{
    using (var con = new SQLiteConnection("你的数据库连接字符串")) // 用using自动释放连接资源
    {
        con.Open();
        string name = textBox1.Text;
        using (SQLiteCommand kom = con.CreateCommand())
        {
            // 参数化查询,规避语法错误和SQL注入风险
            kom.CommandText = "insert into test(name) values(@name)";
            kom.Parameters.AddWithValue("@name", name);
            kom.ExecuteNonQuery();
        }
        textBox1.Clear();
    }
}

另外补充两个小建议:

  • 用using语句包裹数据库连接和命令对象,确保资源被自动释放,避免连接泄漏
  • 尽量不要持有全局的数据库连接对象,每次操作创建新连接(SQLite会自动处理连接池)会更安全稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:38:45