来自文本框值的SQLite表名

时间:2016-08-08 19:28:25

标签: c# sqlite

我想根据用户输入的文本框值或声明的字符串值在SQLite中创建表名。例如:

cmd.CommandText = @"CREATE TABLE '"+Machine_Name.Text+"' AS (Date, Cal_Date) VALUES (@Date, @CalDate)";

我在AS之前收到常量错误的换行符。我知道这可能是糟糕的数据库设计,但这对我这样做很有帮助。

3 个答案:

答案 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);
            }