特定のシナリオでは、開発者は値だけでなく SQL クエリの他の部分もパラメータ化したい場合があります。テーブル名など。テーブル名を直接パラメータ化することはできませんが、これを実現する間接的な方法があります。
1 つのアプローチには、動的 SQL ステートメントの実行を可能にする sp_ExecuteSQL ストアド プロシージャの利用が含まれます。 。 C# 内でクエリを構築し、テーブル名を文字列として連結することで、開発者はこのパラメータ化されたクエリをデータベースに送信できます。
あるいは、開発者は手動で構築することもできます。 C# 内のパラメータ化された TSQL。これには、テーブル名とクエリの残りの部分を連結し、それをコマンドとして送信することが含まれます。テーブル名をホワイトリストに登録することは、悪意のある入力を防ぐために非常に重要です。
開発者がコードの唯一のユーザーであっても、パラメータ化アプローチでは重要なセキュリティが提供されないことに注意することが重要です。セキュリティの向上。ベスト プラクティスは、テーブルに対する特定の SELECT 権限を呼び出し元のユーザーまたはアプリケーションに付与することです。
sp_ExecuteSQL を使用してテーブル名を間接的にパラメータ化する例:
string tableName = "Employee"; string sql = "SELECT * FROM " + tableName + " WHERE Id = @Id"; using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = connection.CreateCommand()) { command.CommandText = sql; command.Parameters.AddWithValue("@Id", id); SqlDataReader reader = command.ExecuteReader(); } }
Inこの例では、テーブル名がコマンド テキスト内の文字列として連結されます。
以上が.NET を使用して SQL Server クエリでテーブル名を間接的にパラメータ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。