0

ここに画像の説明を入力Profile_Nameデータベースに と の列を持つテーブルがありますProfile_Tip

アプリケーションに、テーブル名のテキストを入力するテキスト ボックスがあります。この名前でデータベースにテーブルを作成したいと考えています。Profile_NameSQL インジェクションを発生させずに、新しく作成したテーブルの列名として値を使用したい。親切に助けてください。私は言語を使用する初心者です。前もって感謝します。

4

3 に答える 3

1

Profile_Name1 つのアプローチは、使用する必要のあるデータを取得し、Profile_Tipそれらをパラメーター化されたクエリで使用することです。これにより、SQL インジェクションの可能性のあるほとんどのケースが解決されるはずです。

ただし、説明するデータベース/ソリューション (ユーザー入力に基づいてテーブルを作成する) は、設計が悪いように思えます。要件について詳しく知らずに言うのは難しいですが、ユーザー入力に基づいてテーブルを生成せずにそれらを達成する方法を考えてください。

于 2012-08-31T14:08:35.857 に答える
0

SqlParameter を使用してください。例えば、

SqlConnection connection;
        // initializes connection to your DB
        using (SqlCommand command = connection.CreateCommand())
        {
            command.CommandText = @"ALTER TABLE @TABLE_NAME ADD @COLUMN_NAME varchar(50)";
            command.CommandType = System.Data.CommandType.Text;
            command.Parameters.AddWithValue("@TABLE_NAME", tableName);
            command.Parameters.AddWithValue("@COLUMN_NAME", columnName);

            command.ExecuteNonQuery();
        }

あなたがアイデアを得たことを願っています。

于 2012-08-31T14:13:51.893 に答える
0

動的に作成できます

で実行を使用できますEXEC sp_executesql

サンプル :

DECLARE @string NVARCHAR(100) 
SELECT @string = ".."
EXEC sp_executesql @string
于 2012-08-31T14:14:57.767 に答える