2016-10-04 40 views
0

我需要列添加到表,现在我有这样的代码:这个sqllite alter table查询有什么问题?

public void InsertParameter(string ColumnName) 
{ 
    string sql = "ALTER TABLE table_name ADD :value1"; 

    SQLiteCommand cmd = new SQLiteCommand(sql,conn); 

    cmd.Parameters.AddWithValue("value1", ColumnName); 

    cmd.ExecuteNonQuery(); 
} 

但是,这给我的语法错误:

near ":value1":syntax error

我实在想不出有什么不对本查询?

+0

[插入新列到表中源码?(可能的重复http://stackoverflow.com/questions/4253804/insert-new-column- into-table-in-sqlite) –

+0

不是重复的,而是更多的后续问题。 – dan04

回答

2

它不起作用的原因是SQLite的ALTER TABLE语句的语法需要列名而不是任意字符串类型expr。这意味着你不能使用绑定参数。

(显然,准备语句的执行需要被在“编译”时,所以它不可能是一个变量。已知的表和列名)如果您需要动态地选择C#功能

运行时的列名称,您需要动态创建具有硬编码列名称的SQL语句。 (使用双引号来防止SQL注入攻击。)

string sql = "Alter Table table_name ADD "\"" + ColumnName.Replace("\"", "\"\"") + "\""; 
+1

自从您发布自己的评论以来,我删除了我的答案:-)这更加清晰并解释了这种方法。感谢您的有用信息! – vanlee1987