
今回は、C#からSQLServerへ接続しデータを取得する方法を紹介していきます。
C#から、SQLServerに接続する人は是非参考にしてみてください。
接続文字列の作成
まずは、VisualStudioの設定ファイルに接続文字列を指定しましょう。
「プロジェクトを右クリック」→「プロパティ」
→「設定」→下のような画面が表示されます。
そして接続文字列を設定していきます。
「名前:sqlServer」
「種類:(接続文字列)」
「スコープ:アプリケーション」
「値:...のボタンを押下」
最後に値を入れるのですが、「...」をクリックしてください。データソースの選択画面が表示されるので、「Microsoft SQL Server」を選択しましょう。
「続行」をクリック
※この時、インストールが足りていないと、Visual Studio のインストーラが起動されますので、そのままインストールを選択してください。
「接続のプロパティ」が表示されると思うので、下記画像の4つの項目を設定していきます。
まずは「サーバー名」と「認証」を設定していきます。
SSMS(SqlServerManagementStudio)の「サーバへの接続」のサーバー名と認証を、そのまま入力しましょう。
まだSQLSERVERをインストールしていない方は、先にインストールしておきましょう。

サーバー名を入力します。今回はWindows認証で行うので認証はこのままでいきます。
認証もSSMSでサーバー接続する時の設定に合わせておきましょう。(各環境によって違うので注意してください。)
そして、対象のDBを選択してください。テスト接続でOKが出たら、「OK」をクリックしましょう。
これで、接続文字列の設定は、完了です。
SQLServerのデータ取得方法
それでは、ここからは、実際にSQLServerのデータを取得する書き方を載せていきます。
今回は、あらかじめテーブル(hironimoTable)を用意しており、5件のデータを登録しています。
SELECT * FROM hironimoTable
id |nickName|animal|height|weight|insDt |updDt
-----+--------+------+------+------+-----------------------+-----------------------
00001|ひろにも|きりん|150 |55.5 |2020-03-02 00:00:00.000|2020-03-02 00:00:00.000
00002|ひろにも|きりん|160 |60.0 |2020-03-02 00:00:00.000|2020-03-02 00:00:00.000
00003|ひろにも|きりん|170 |70.0 |2020-03-02 00:00:00.000|2020-03-02 00:00:00.000
00004|ひろにも|きりん|180 |80.0 |2020-03-02 00:00:00.000|2020-03-02 00:00:00.000
00005|ひろにも|きりん|150 |90.0 |2020-03-02 00:00:00.000|2020-03-02 00:00:00.000
SQLServer接続
SQLServerに接続するには、SqlConnectionを利用しましょう。
SqlConnection 変数名= new SqlConnection(接続文字列);
変数名.Open();
ここで先ほど作成した、「接続文字列」を使います。具体的な例を記載します。
SqlConnection sqlconn = new SqlConnection(Properties.Settings.Default.sqlServer);
sqlconn.Open();
解説
1行目:SqlConnectionの変数を宣言しています。接続文字列には、設定ファイルの値を設定しています。
(「設定ファイルの設定方法:Properties.Settings.Default.名前」便利なので覚えておきましょう。)
2行目:1行目は、SqlConnectionの変数を設定しただけなので、Openメソッドで接続を開始します。
SQLの実行 データ取得
Sqlを実行するには、SqlCommand利用し、データを取得する方法は2種類あります。
「SqlDataReader」を利用して、取得する方法と、「SqlDataAdapter」を利用してDataTableに格納する方法です。
SqlCommand 変数= new SqlCommand(SQL文, SqlConnection, SqlTransaction);
SqlTransactionは、主にデータを更新するときなどに使います。今回は、データの取得のみなので使用しません。
使用しない場合は、省略することができます。
1SqlDataReaderを利用する方法
まずは、SqlDataReaderを利用した例を見てみましょう。
StringBuilder sql = new StringBuilder();
sql.AppendLine("SELECT");
sql.AppendLine(" *");
sql.AppendLine("FROM hironimoTable");
SqlCommand command = new SqlCommand(sql.ToString(), sqlconn);
SqlDataReader dr = command.ExecuteReader();
while (dr.Read())
{
for(int i = 0; i < dr.FieldCount; i++)
{
Console.Write(dr[i] + " ");
}
Console.WriteLine();
}
SqlDataReaderは、インデックスの指定か、項目名を指定することで取得することができます。
while (dr.Read())
{
Console.Write(dr["id"] + " ");
Console.Write(dr["nickName"].ToString() + " ");
Console.Write(dr["animal"].ToString() + " ");
Console.Write(dr["height"].ToString() + " ");
Console.Write(dr["weight"].ToString() + " ");
Console.Write(dr["insDt"].ToString() + " ");
Console.Write(dr["updDt"].ToString() + " ");
Console.WriteLine();
}
2SqlDataAdapterを利用する方法
SqlDataAdapterを利用することで、DataTableに格納することができます。
StringBuilder sql = new StringBuilder();
sql.AppendLine("SELECT");
sql.AppendLine(" *");
sql.AppendLine("FROM hironimoTable");
SqlCommand command = new SqlCommand(sql.ToString(), sqlconn);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable dt = new DataTable();
adapter.Fill(dt);
//実行結果
for (int rowindex = 0; rowindex < dt.Rows.Count; rowindex++)
{
for (int colindex = 0; colindex < dt.Columns.Count; colindex++)
{
Console.Write(dt.Rows[rowindex][colindex].ToString() + " ");
}
Console.WriteLine();
}
「SqlDataReader」も「SqlDataAdapter」結果は同じになります。
SqlDataReaderのほうが処理が早いですが、DataTableに格納すると便利な時もありますので、どちらのやり方も抑えておくといいと思います。
サンプルソース
サンプルソースを載せておきます。SqlDataAdapterのサンプルを載せています。
try
{
//SQLServerの接続開始
SqlConnection sqlconn = new SqlConnection(Properties.Settings.Default.sqlServer);
sqlconn.Open();
try
{
//SQL作成
StringBuilder sql = new StringBuilder();
sql.AppendLine("SELECT");
sql.AppendLine(" *");
sql.AppendLine("FROM hironimoTable");
//SQL実行
SqlCommand command = new SqlCommand(sql.ToString(), sqlconn);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable dt = new DataTable();
adapter.Fill(dt);
//実行結果
for (int rowindex= 0;rowindex < dt.Rows.Count; rowindex++)
{
for (int colindex = 0; colindex < dt.Columns.Count; colindex++)
{
Console.Write(dt.Rows[rowindex][colindex].ToString() + " ");
}
Console.WriteLine();
}
}
catch
{
throw;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
結果
00001 ひろにも きりん 150 55.5 2020/03/02 0:00:00 2020/03/02 0:00:00
00002 ひろにも きりん 160 60.0 2020/03/02 0:00:00 2020/03/02 0:00:00
00003 ひろにも きりん 170 70.0 2020/03/02 0:00:00 2020/03/02 0:00:00
00004 ひろにも きりん 180 80.0 2020/03/02 0:00:00 2020/03/02 0:00:00
00005 ひろにも きりん 150 90.0 2020/03/02 0:00:00 2020/03/02 0:00:00
まとめ
今回は、SQLServerへの接続方法とSQLServerの値を取得する方法を紹介しました。
下記3つのポイントをしっかりと覚えておきましょう。
- 接続文字列の作成方法
- SqlConnectionを利用した接続
- SqlDataReaderもしくはSqlDataAdapterを利用したデータの取得
このやり方はかなり実践でも使えるので、おすすめです!
今回は以上です!お疲れさまでした。