我想根据用户输入的文本框值或声明的字符串值在SQLite中创建表名。例如:
cmd.CommandText = @"CREATE TABLE '"+Machine_Name.Text+"' AS (Date, Cal_Date) VALUES (@Date, @CalDate)";
我在AS之前收到常量错误的换行符。我知道这可能是糟糕的数据库设计,但这对我这样做很有帮助。
答案 0 :(得分:2)
您的查询语法似乎混淆了。
如果您想要create table
,则必须提供列规范(名称和数据类型),或者如果您使用create table as
,则必须使用有效的select
查询来定义列名/类型。
包含values
子句的语句的最后一部分是INSERT
的有效表单,但不适用于create table
。
有关详细信息,请参阅此处的Documentation。
答案 1 :(得分:1)
创建表的语法如下
cmd.CommandText = @"CREATE TABLE '" + newTable + "'" +
"(DATE DATETIME, CAL_DATE VARCHAR(256))";
这当然假设您的字段是DateTime和VarChar 换句话说,在您输入的表名之后,在parenthesys之间,列的名称及其数据类型。
我建议还要特别注意用户为新表名称键入的值。输入任何内容的这种自由可能非常危险,并且当恶意用户尝试创建Sql Injection attack.时,它是基本构建块
答案 2 :(得分:0)
string ct = "Create table '" + Textbox1.Text +"'(Column1, Column2)";
SQLiteCommand createCommand1 = new SQLiteCommand(ct, sqliteCon);
createCommand1.ExecuteNonQuery();
sqliteCon.Close();
MessageBox.Show("Data Saved");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}