2016-08-08 6 views
0

から私は、ユーザー入力テキストボックスの値または宣言された文字列の値に基づいて、SQLiteの中でテーブル名を作成します。例:SQLiteのテーブル名テキストボックスの値

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

ASの直前で一定のエラーが発生しました。私はこれが悪いデータベース設計かもしれないことを知っていますが、私にはこのようにするのが役に立ちます。

+0

うまくいけば、ユーザーは、彼らがテーブル次回を与えたものの名前を覚えてますを作成しようとすると、それは基本的なビルディングブロックです。 – Plutonix

答えて

1

テーブルを作成するための構文は、あなたのフィールドが日時とvarchar型であると仮定しているこのコースの次

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

です。言い換えれば
は、テーブル名の後に、あなたは、parenthesys間、カラムとそのデータ型の名前を入れました。

私は、新しいテーブルの名前については、お手元のユーザー・タイプの値に特に注意を払うことも示唆しています。何を入力するには、この自由は非常に危険なことができ、悪意のあるユーザーがSql Injection attack.

+0

お返事ありがとうございます。私はすべてのテキストボックスに制限があります。これは非常に少数のユーザしかない単純なローカルネットワークプログラムです。 Webベースのものではありません。私がそれをさらに発展させるなら、それを念頭に置いておきます。私がこのようにしているのは、sqliteを更新するのが少し難しいためです。 rowidを使用して値を更新するだけです。 – LitteringAnd

2

あなたのクエリ構文を混同しているようです。

あなたがcreate tableにしたい場合は、列仕様(名前とデータ型)を提供する必要がある、またはあなたがcreate table asを使用する場合、有効なselectクエリは、列名/タイプを定義するために使用する必要があります。

values句のステートメントの最後の部分は、INSERTの有効な形式ですが、create tableでは有効ではありません。

詳細はこちらDocumentationを参照してください。

+0

ありがとうございます。テーブルを作って値を挿入することもできると思っていました。 – LitteringAnd

関連する問題