C# 【データベース操作編】
目次
データベースへの接続
データベースに接続する処理について解説します。
プログラムソース
using System;
using System.Data.OleDb;
class MyCls {
static void Main() {
OleDbConnection Cn = new OleDbConnection();
string strCn;
strCn = @"Provider=SQLOLEDB;"
+ @"Data Source=localhost\SQLExpress;"
+ @"Initial Catalog=Database;User ID=sa;Password=sa;";
Cn.ConnectionString = strCn;
Cn.Open();
Console.WriteLine("接続完了");
Console.ReadKey();
Cn.Close();
Cn.Dispose();
}
}
解説
OleDb.OleDbConnection
データベース接続に使用するクラス
OleDbConnection.ConnectionString = 接続文字列
接続文字列を設定します。
OleDbConnection.Open
データベースに接続します。
OleDbConnection.Close
データベースとの接続を切断します。
データの取得
データを取得する処理について解説します。
プログラムソース
using System; using System.Data; using System.Data.OleDb;
class MyCls {
static void Main() {
OleDbConnection Cn = new OleDbConnection();
OleDbCommand Cmd = new OleDbCommand();
OleDbDataAdapter Da = new OleDbDataAdapter();
DataSet Ds = new DataSet();
Cn.ConnectionString = @"Provider=SQLOLEDB;"
+ @"Data Source=localhost\SQLExpress;"
+ @"Initial Catalog=Database;User ID=sa;Password=sa;";
Cn.Open();
Cmd.Connection = Cn;
Cmd.CommandText = @"SELECT * FROM 社員マスタ";
Da.SelectCommand = Cmd;
Da.Fill(Ds);
foreach(DataRow dr in Ds.Tables[0].Rows) {
Console.WriteLine(dr["社員コード"] + " " + dr["社員名"]);
}
Console.ReadKey();
Cn.Close();
Ds.Dispose(); Da.Dispose(); Cmd.Dispose(); Cn.Dispose();
}
}
解説
OleDb.OleDbCommand
実行するSQL文を設定するクラス
OleDb.OleDbDataAdapter
データ取得に使用するクラス
DataSet
取得したデータを格納するクラス
OleDbDataAdapter.Fill(データセット)
データセットにデータを格納します。
SQLの実行
SQLを実行する処理について解説します。
プログラムソース
using System;
using System.Data.OleDb;
class MyCls {
static void Main() {
OleDbConnection Cn = new OleDbConnection();
OleDbCommand Cmd = new OleDbCommand();
string strSQL;
Cn.ConnectionString = @"Provider=SQLOLEDB;"
+ @"Data Source=localhost\SQLExpress;"
+ @"Initial Catalog=Database;User ID=sa;Password=sa;";
Cn.Open();
strSQL = @"UPDATE 社員マスタ "
+ @"SET 部門コード = 3 "
+ @"WHERE 社員コード = 4";
Cmd.Connection = Cn;
Cmd.CommandText = strSQL;
Cmd.ExecuteNonQuery();
Console.WriteLine("更新完了");
Console.ReadKey();
Cn.Close();
Cmd.Dispose(); Cn.Dispose();
}
}
解説
OleDbCommand.ExecuteNonQuery
指定されたSQL文を実行します。
トランザクション処理
トランザクション処理について解説します。
プログラムソース
using System; using System.Data.OleDb;
class MyCls {
static void Main() {
OleDbConnection Cn = new OleDbConnection();
OleDbCommand Cmd = new OleDbCommand();
OleDbTransaction Trn = null; string strSQL;
try {
Cn.ConnectionString = @"Provider=SQLOLEDB;"
+ @"Data Source=localhost\SQLExpress;"
+ @"Initial Catalog=Database;User ID=sa;Password=sa;";
Cn.Open();
Trn = Cn.BeginTransaction();
Cmd.Connection = Cn;
Cmd.Transaction = Trn;
strSQL=@"INSERT 社員マスタ VALUES(1,'社員A',1)";
Cmd.CommandText = strSQL; Cmd.ExecuteNonQuery();
strSQL=@"INSERT 所有資格マスタ VALUES(1,1,'簿記3級')";
Cmd.CommandText = strSQL; Cmd.ExecuteNonQuery();
Trn.Commit(); Console.WriteLine("成功");
} catch(Exception) {
Trn.Rollback(); Console.WriteLine("失敗");
} finally {
Cn.Close(); Cmd.Dispose(); Cn.Dispose(); Console.ReadKey();
}
} }
解説
OleDbConnection.BeginTransaction
トランザクション処理を開始します。
OleDbTransaction.Commit
更新内容を確定する場合は、コミットします。
OleDbTransaction.Rollback
更新内容を破棄する場合は、ロールバックします。
データベース別の接続文字列
データベース別の接続文字列については、ご覧のとおりです。
プログラムソース
Oracle
strCn = @"Provider=OraOLEDB.Oracle;"
+ @"Data Source=ホスト名:1521/XEPDB1;"
+ @"User Id=MYUSER;Password=MYUSER;";
MySQL
strCn = @"DRIVER={MySQL ODBC 8.0 ANSI Driver};"
+ @"SERVER=localhost;PORT=3306;"
+ @"DATABASE=myschema;UID=root;PASSWORD=manager;";
※OdbcConnection使用時
Access
strCn = @"Provider=Microsoft.ACE.OLEDB.12.0;"
+ @"Data Source=C:\Users\home\Desktop\Database.accdb";