System.Data.SQLite参数未被替换

时间:2011-05-06 16:51:04

标签: c# sql sqlite

            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 个答案:

答案 0 :(得分:5)

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

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