私は答えを探しましたが、私が見つけた解決策はSQLiteではうまくいきませんでした。 テーブルを作成するユーザーによって定義された名前と列を使用して、SQLiteデータベースに異なるテーブルを作成したいとします。SQLiteは、C#で変数名のテーブルを作成します
私は、後でテストできるリストを作成することで、ユーザーが言語に関する知識をテストできるプロジェクトに取り組んでいます。リストはデータベースに別のテーブルとして保存する必要があります。
だから私は「txtNaamLijst.Text」テキストボックスに等しいテーブル名とデータベース内の各リストを保存したいです。 それに加えて、ユーザーが定義したように、列に "txtTaal1.Text" en "txtTaal2.Text"という名前を付けるようにします。
私が書いたスクリプトは機能しません。ウェブ上で見つけたスクリプトもうまくいきませんでした。あなたは、テーブル名のパラメータとして@naam
を使用し、両方のクエリで
protected void btnSave_Click(object sender, EventArgs e)
{
using (System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection("Data Source=C:/Users/elias/Documents/Visual Studio 2017/WebSites/WebSite7/App_Data/overhoren.db"))
{
using (System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand(conn))
{
string naam = txtNaamLijst.Text;
string taal1 = txtTaal1.Text;
string taal2 = txtTaal2.Text;
string veld1 = txtVeld1.Text;
string veld1v2 = txtVeld1v2.Text;
string veld2 = txtVeld2.Text;
string veld2v2 = txtVeld2v2.Text;
string veld3 = txtVeld3.Text;
string veld3v2 = txtVeld3v2.Text;
string veld4 = txtVeld4.Text;
string veld4v2 = txtVeld4v2.Text;
string veld5 = txtVeld5.Text;
string veld5v2 = txtVeld5v2.Text;
string veld6 = txtVeld6.Text;
string veld6v2 = txtVeld6v2.Text;
conn.Open();
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.AddWithValue("@naam", naam);
cmd.Parameters.AddWithValue("@taal1", taal1);
cmd.Parameters.AddWithValue("@taal2", taal2);
cmd.Parameters.AddWithValue("@veld1", veld1);
cmd.Parameters.AddWithValue("@veld1v2", veld1v2);
cmd.Parameters.AddWithValue("@veld2", veld2);
cmd.Parameters.AddWithValue("@veld2v2", veld2v2);
cmd.Parameters.AddWithValue("@veld3", veld3);
cmd.Parameters.AddWithValue("@veld3v2", veld3v2);
cmd.Parameters.AddWithValue("@veld4", veld4);
cmd.Parameters.AddWithValue("@veld4v2", veld4v2);
cmd.Parameters.AddWithValue("@veld5", veld5);
cmd.Parameters.AddWithValue("@veld5v2", veld5v2);
cmd.Parameters.AddWithValue("@veld6", veld6);
cmd.Parameters.AddWithValue("@veld6v2", veld6v2);
cmd.CommandText = "CREATE TABLE IF NOT EXISTS @naam (@taal1 VARCHAR(50), @taal2, VARCHAR(50))";
cmd.CommandText = "INSERT INTO @naam (@taal1, @taal2) SELECT @veld1 , @veld1v2 UNION ALL SELECT @veld2 , @veld2v2 UNION ALL SELECT @veld3 , @veld3v2 UNION ALL SELECT @veld4 , @veld4v2 UNION ALL SELECT @veld5 , @veld5v2 UNION ALL SELECT @veld6 , @veld6v2";
cmd.Connection = conn;
cmd.ExecuteNonQuery();
conn.Close();`
}
}
}
パラメータを使用してテーブル名とカラム名を表すことはできません。 – Steve
意図した結果の代わりに何が起こっていますか? – stybl
@Styそれは "@naam"の近くにあります:構文エラー... – ielaajez