从文本框值中查询SQLite表名

本文关键字:查询 SQLite 表名 文本 | 更新日期: 2023-09-27 18:01:34

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

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

我在AS之前收到一个恒定错误的换行符。我知道这可能是糟糕的数据库设计,但它将有助于我这样做。

从文本框值中查询SQLite表名

您的查询语法似乎混淆了。

如果你想要create table,你必须提供列规范(名称和数据类型),或者如果你使用create table as,一个有效的select查询必须用来定义列名/类型。

values子句语句的最后一部分是INSERT的有效形式,但不是create table的有效形式。

创建表的语法如下

cmd.CommandText = @"CREATE TABLE '" + newTable + "'" + 
                   "(DATE DATETIME, CAL_DATE VARCHAR(256))";

这当然假设你的字段是一个DateTime和一个VarChar。
换句话说,在表名之后,在括号之间,列的名称和它们的数据类型。

我还建议特别注意用户为新表名键入的值。这种键入任何东西的自由可能是非常危险的,当恶意用户试图创建Sql注入攻击时,它是基本的构建块。

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