ホームページ > データベース > mysql チュートリアル > .NET を使用して SQL Server クエリでテーブル名を間接的にパラメータ化するにはどうすればよいですか?

.NET を使用して SQL Server クエリでテーブル名を間接的にパラメータ化するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-17 08:53:25
オリジナル
591 人が閲覧しました

How Can I Indirectly Parameterize Table Names in SQL Server Queries Using .NET?

.NET を使用した SQL Server のテーブル名のパラメータの使用

特定のシナリオでは、開発者は値だけでなく SQL クエリの他の部分もパラメータ化したい場合があります。テーブル名など。テーブル名を直接パラメータ化することはできませんが、これを実現する間接的な方法があります。

sp_ExecuteSQL による間接的なパラメータ化

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート