LoginSignup
3
1

More than 3 years have passed since last update.

【C#】SQLで読み込んだデータをクラスプロパティに格納して返すメソッド

Last updated at Posted at 2019-08-20

SQL Serverのデータベースに接続して、読み込んだ値を変数に格納する文法を記述します。

はじめに、データベースに接続するまでの文。

Service1.svc.cs
public SavedData SetData(int selected_id)  //メソッド名 引数には主要キー、返り値にはクラス名
{
    const string connStr = @"Data Source=(local);
                        Initial Catalog= stafflist; Integrated Security=True;";

    using (var conn = new SqlConnection(connStr))
    {
        conn.Open();
        var cmd = conn.CreateCommand(); 
        // コネクションからコマンドへ-SqlConnectionに関連付けられているSqlCommandオブジェクトを作成

        cmd.Parameters.Add(new SqlParameter("@selected_id", selected_id));
        cmd.CommandText = @"SELECT Id,Name,DepartmentId,Sex,JoinedYear,Note
                            FROM dbo.Staff Where Id = @selected_id ";

ここまででデータベースに接続。以下、データベースから読み込んだ値をクラスのプロパティに代入

Service1.svc.cs
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                int demoid = (int)reader["Id"]; 
                //クラスプロパティ'ID'のデータ型がintの場合は、このように変換

                setdata.ID = demoid.ToString();
                setdata.NAME = (string)reader["Name"];
                setdata.DEPARTMENTID = (int)reader["DepartmentId"];
                setdata.SEX = (int)reader["Sex"];
                setdata.JOINEDYEAR = (int)reader["JoinedYear"];
                setdata.NOTE = (string)reader["Note"];
            }
        }
    }

    //メソッドが呼び出されたインスタンス自身を返す
    return setdata;
}

これで、この返り値にあてたクラスをインスタンス化して、変数を自由に格納できる。

追記

編集リクエストをくださった@nogic1008さん、ありがとうございました。

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1