System.Data.SQLite 参数未被替换

Posted

技术标签:

【中文标题】System.Data.SQLite 参数未被替换【英文标题】:System.Data.SQLite parameters not being substituted 【发布时间】:2011-08-20 08:24:14 【问题描述】:
            conn = new SQLiteConnection("Data Source=nk.db");
            var items = from n in internalMap.storage select n.paramName;
            conn.Open();

            cmd = new SQLiteCommand("CREATE TABLE @table_name (name TEXT)",conn);

            //create table for the index

            cmd.Parameters.AddWithValue("@table_name", j);



            cmd.ExecuteNonQuery();

当这行被执行时“cmd.ExecuteNonQuery();”我得到以下异常

“\“@table_name\”附近的 SQLite 错误:语法错误”

我所做的所有搜索似乎都表明您就是这样做的。

不知道怎么回事

【问题讨论】:

【参考方案1】:

在我使用过的大多数数据库中,DDL 命令不能像这样参数化,甚至 DML 语句也不能通过表名(或字段名等)参数化。一般只有表达式值可以参数化。

在大多数情况下,这没关系,因为您通常没有用户提供的数据,例如名称中的表格,并且没有格式考虑因素,例如数字和日期/时间等内容...所以 SQL 语句中的纯字符串替换可能是你能做的最好的,尽管它可能很丑。

【讨论】:

以上是关于System.Data.SQLite 参数未被替换的主要内容,如果未能解决你的问题,请参考以下文章

C# 引入Sqlite 未能加载文件或程序集“System.Data.SQLite

System.Data.SQLite数据库简介

使用 System.Data.SQLite 和 C# 检索 BLOB

未能加载文件或程序集“System.Data.SQLite”

System.Data.Sqlite 1.0.99 引导比较不起作用

使用 System.Data.SQLite (C#) 的 SQLite 查询比在 SQLiteStudio 中要慢得多