(1) C#からDB接続する方法~SQLServerへの接続プログラム例もご紹介~
(1-1) 構文(DB接続)
(1-2) 構文(SELECT文発行)
(1-3) サンプルプログラム
(1-4) サンプルプログラム実行動画
(1) C#からDB接続する方法~SQLServerへの接続プログラム例もご紹介~
C#プログラムからデータベースに接続する方法について、SQLServerへの接続を例にご紹介します。
(1-1) 構文(DB接続)
(構文)
connectionString = @"Data Source=[データソース名];Initial Catalog=[初期接続DB名];User ID=[ユーザーID];Password=[パスワード]; SqlConnection cnn = new SqlConnection(connectionString); cnn.Open();
(構文説明)
・まずはDBへの接続をするためにSqlConnectionクラスのインスタンスを生成します(↓この部分)。
SqlConnection cnn = new SqlConnection(connectionString);
・SqlConnectionのコンストラクタ引数には「接続情報」の値を与えますが、主に次に示す要素をセミコロン「;」で接続した文字列(String型)として与えます(↓この部分)。
connectionString = @"Data Source=[データソース名];Initial Catalog=[初期接続DB名];User ID=[ユーザーID];Password=[パスワード];
・そしてOpen()メソッドにより接続の確立を行います。この時にSqlConnectionの引数で指定した接続情報を用いて接続を行います(↓この部分)。
cnn.Open();
(1-2) 構文(SELECT文発行)
(構文)
SqlCommand command = new SqlCommand("[SQLクエリ]", conn); using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1])); } }
(構文説明)
・まずはSqlCommandクラスのインスタンスを作ります。このSqlCommandクラスはSQLServerに対して実行する「Transact-SQL」や「ストアドプロシージャ」を表します(↓この部分)。
SqlCommand command = new SqlCommand("[SQLクエリ]", conn);
・次にusingステートメントを用いて「SqlDataReader」のインスタンスを作り使用します。「SqlDataReader」はSQLの結果の行を読むために使用するクラスです(↓この部分)。
using (SqlDataReader reader = command.ExecuteReader()) { [処理] }
・最後にusingステートメントの中身で、SQLを読む処理を記述します。while文で最後の行に到達するまでRead()メソッドで読み込みを繰り返します。
while (reader.Read()) { Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1])); }
(1-3) サンプルプログラム
上記のDB接続の構文とSELECT文発行の構文とを組み合わせて、DB接続~SQL実行までを行うサンプルプログラムをご紹介します。
(サンプルプログラム)
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace RP_IT0171_ConsoleApp2 { class Program { static void Main(string[] args) { string dataSource, initCatalog, userId, passWord, connectionString; dataSource = "[HostName/IP Address]"; initCatalog = "[DatabaseName]"; userId = "[UserName]"; passWord = "[Password]"; connectionString = @"Data Source=" + dataSource + ";Initial Catalog=" + initCatalog + ";User ID=" + userId + ";Password=" + passWord; string query_s = "SELECT * FROM dbo.access_counter"; //SqlConnectionクラスのインスタンスをusing内で使用して、接続の確立 //(usingを抜けたら、自動で切断する) using (SqlConnection conn = new SqlConnection(connectionString)) { //接続を確立 conn.Open(); //SELECT文を作成 SqlCommand command_s = new SqlCommand(query_s, conn); //SqlDataReaderクラスのインスタンスをusing内で使用して、レコードを読み込み //(usingを抜けたら、SqlDataReaderを破棄) using (SqlDataReader reader = command_s.ExecuteReader()) { //最終行に到達するまで繰り返し読み込み while (reader.Read()) { //コンソールに1列目、2列目、3列目の値を表示 Console.WriteLine(String.Format("{0}, {1}, {2}", reader[0], reader[1], reader[2])); } } conn.Close(); } } } }
(1-4) サンプルプログラム実行動画
(実行動画)
まずは取得予定のテーブルのレコードをSSMSで確認し、VisualStudioからプログラムを実行して、コンソールにその値が表示される事を確認しています。
(補足)
今回のプログラムは「コンソールアプリ (.NET Framework)」を使って作成しました。
(図132)
[…] 書いてるコードの記述がわからない際は、C# Sqlserver 接続 みたいに検索したら沢山出てくると思いますのでそちらをご覧ください。 […]