1. ホーム
  2. c#

C#でSQLクエリを直接実行するには?

2023-11-30 22:58:04

質問

OK、私はまさに私が必要とするものを行う古いバッチファイルを持っています。 しかし、新しい管理者では、もうバッチ ファイルを実行できないので、C# で起動する必要があります。

私は Visual Studio C# を使用しており、構築する必要のあるアプリケーション用にすでにフォームをセットアップしています。(やりながら学んでいます)。

C#で達成する必要があることは次のとおりです (これはバッチの内臓です)。

sqlcmd.exe -S .\PDATA_SQLEXPRESS -U sa -P 2BeChanged! -d PDATA_SQLEXPRESS  -s ; -W -w 100 -Q "SELECT tPatCulIntPatIDPk, tPatSFirstname, tPatSName, tPatDBirthday  FROM  [dbo].[TPatientRaw] WHERE tPatSName = '%name%' "

基本的には SQLCMD.exe という既に存在するデータソースに PDATA_SQLExpress .

検索して近づいたものの、何から手をつければいいのか途方に暮れています。

どのように解決するのですか?

C#の中から直接コマンドを実行するためには SqlCommand クラスを使用します。

パラメータ化されたSQLを使用した簡単なサンプルコード(インジェクション攻撃を避けるため)は以下のようになります。

string queryString = "SELECT tPatCulIntPatIDPk, tPatSFirstname, tPatSName, tPatDBirthday  FROM  [dbo].[TPatientRaw] WHERE tPatSName = @tPatSName";
string connectionString = "Server=.\PDATA_SQLEXPRESS;Database=;User Id=sa;Password=2BeChanged!;";

using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(queryString, connection);
    command.Parameters.AddWithValue("@tPatSName", "Your-Parm-Value");
    connection.Open();
    SqlDataReader reader = command.ExecuteReader();
    try
    {
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}",
            reader["tPatCulIntPatIDPk"], reader["tPatSFirstname"]));// etc
        }
    }
    finally
    {
        // Always call Close when done reading.
        reader.Close();
    }
}