求助:向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
相关产品推荐
相关产品推荐

