Profile_Name
データベースに と の列を持つテーブルがありますProfile_Tip
。
アプリケーションに、テーブル名のテキストを入力するテキスト ボックスがあります。この名前でデータベースにテーブルを作成したいと考えています。Profile_Name
SQL インジェクションを発生させずに、新しく作成したテーブルの列名として値を使用したい。親切に助けてください。私は言語を使用する初心者です。前もって感謝します。
Profile_Name
データベースに と の列を持つテーブルがありますProfile_Tip
。
アプリケーションに、テーブル名のテキストを入力するテキスト ボックスがあります。この名前でデータベースにテーブルを作成したいと考えています。Profile_Name
SQL インジェクションを発生させずに、新しく作成したテーブルの列名として値を使用したい。親切に助けてください。私は言語を使用する初心者です。前もって感謝します。
Profile_Name
1 つのアプローチは、使用する必要のあるデータを取得し、Profile_Tip
それらをパラメーター化されたクエリで使用することです。これにより、SQL インジェクションの可能性のあるほとんどのケースが解決されるはずです。
ただし、説明するデータベース/ソリューション (ユーザー入力に基づいてテーブルを作成する) は、設計が悪いように思えます。要件について詳しく知らずに言うのは難しいですが、ユーザー入力に基づいてテーブルを生成せずにそれらを達成する方法を考えてください。
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();
}
あなたがアイデアを得たことを願っています。
動的に作成できます
で実行を使用できますEXEC sp_executesql
サンプル :
DECLARE @string NVARCHAR(100)
SELECT @string = ".."
EXEC sp_executesql @string