勉強のためにSQLServerとVisualStudioを入れてアプリケーションを作っています。
そんな時に、C#でデータベースへアクセスするって具体的にどう書けば良いのか
書き方が全く分からない時期がありました。
初球から中級レベルにはなったので、
このタイミングでプログラム初心者の手助けになるよう書き方を紹介します。
SQLServer接続 – SELECT
ソースコードとしては以下です。
引数としてString sqlにSELECT文を受け取ります。
SELECT文で返ってきたDataTableへテーブルに名前を付けてDataSetに格納します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
using System.Data.SqlClient; using System.Data.Sql; using System.Data; public DataSet executeSql(String sql, string tableName) { DataSet dsResult = new DataSet(); SqlConnection sqlCon = null; SqlTransaction sqlTran = null; SqlCommand sqlCommand = null; SqlDataAdapter dataAdapter = null; DataSet dsData = new DataSet(); sqlCon = new SqlConnection(); sqlCon.ConnectionString = "Server=PCName or ServerName; Database=DBName; User ID=sa;Password=PassWord;"; sqlCon.Open(); sqlTran = sqlCon.BeginTransaction(); sqlCommand = new SqlCommand(sql, sqlCon, sqlTran); dataAdapter = new SqlDataAdapter(sqlCommand); dataAdapter.Fill(dsData, tableName); sqlTran.Commit(); dataAdapter.Dispose(); sqlCommand.Dispose(); sqlCon.Close(); return dsData; } |
SQLServer接続 – INSERT UPDATE DELETE
ソースコードとしては以下です。
引数としてString sqlにSQL文を受け取ります。
sqlを使ってデータベースへ更新をかけます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
using System.Data.SqlClient; using System.Data.Sql; using System.Data; public void ExecuteNonQuery(string sql) { using (SqlCommand command = new SqlCommand()) { SqlConnection conn = new SqlConnection(); conn.ConnectionString = conn.ConnectionString = @"Data Source=PCName or ServerName;Initial Catalog=DBName;User Id=sa;Password=PassWord;"; // トランザクションを開始します。 conn.Open(); SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted); try { command.CommandText = sql; command.Connection = conn; command.Transaction = transaction; command.ExecuteNonQuery(); //トランザクションをコミットします。 transaction.Commit(); } catch (System.Exception) { //トランザクションをロールバックします。 transaction.Rollback(); throw; } finally { conn.Close(); } } } |
SQLServer接続時の補足
ConnectionString について
Server(Data Source)
1 |
SELECT HOST_NAME() |
※IPアドレスでも指定可能ですが、変わってしまうこともあると思うので、
個人的にはホスト名を記載することをお勧めします
Database
1 2 3 4 5 6 |
SELECT NAME ,DATABASE_ID ,CREATE_DATE FROM SYS.DATABASES; |
User IDとPassword
サンプルに記載の通り、ユーザ名とパスワードを使って認証します。
記載するのはSQLServerに設定しているユーザ名とパスワードです。
SQLServerManagementStudioを開く際に確認可能です。
Server=PCName or ServerName;Database=DBName;Integrated Security=True;
SQLServer認証、Windows認証の違いはそもそも何かについては、
よい説明があったのでこちらをご確認ください。
※私のように個人の勉強レベルのために使っている場合関係はありません。
企業のシステム導入になれば知っておくべきと思います。
おわりに
プログラミングの勉強を始められた方々はこの記事を読まれることが多いのではないかと思います。
私はまだ文系卒でプログラムに触れて4年程度ですが、
プログラムへ新たに触れていかれる方へもっと有益な情報を紹介できればと思います。