アクセスが多い記事は、
データベース接続が毎日、必ず誰が観覧しています。
データベースを扱うには必ず、接続文字列についての知識が必要になりますね!
使用言語 ⇔ ミドルウェア ⇔ データベース
の関係にあることは、もちろんご存じですよね!
・使用言語とは、VC++、VB6.0、VB.NET、VC#.NET、Java、COBOLなどです。
・ミドルウェアは、DAO、ADO、ADO.NET、JDBC、ODBCなどです。
・データベースは、Access、SQL-Server、Oracleなどです。
===== ミドルウェアが異なる =====
ご存じだと思いますが、同じ言語、同じデータベースですが、ミドルウェアが異なれば、書き方が異なります。
VB6.0、Accessに接続する場合
<< DAOの場合 >>
' DAOのオブジェクト変数を宣言する
Dim ws As DAO.Workspace, db As DAO.Database
Dim rs As DAO.Recordset
' デフォルトのワークスペースを定義する
Set ws = DBEngine.Workspaces(0)
' データベースを開く
Set db = ws.OpenDatabase("C:My Documentsdb1.mdb")
' テーブル名を指定してレコードセットを作成する
Set rs = db.OpenRecordset("Table1", dbOpenDynaset)
<< ADOの場合 >>
' ADOのオブジェクト変数を宣言する
Dim cnn As New ADODB.Connection
Dim rec As New ADODB.Recordset
' 接続を確立する
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:My Documentsdb1.mdb;"
' テーブル名を指定してレコードセットを作成する
rec.Open "Table1", cnn, adOpenKeyset, adLockOptimistic
<まとめ>
宣言が異なります。 接続方法、追加、更新、削除の方法が異なる。
※宣言は、「DAO.Workspace」と「ADODB.Connection」です。
当然ながら、混在することは可能ですが、繁雑になるため普通は使用しません。
===== データベースが異なる =====
また、同じ言語、同じミドルウェアで、データベースが異なれば書き方が違います。
VB.NET、ADO.NETに接続する場合
<< Accessの場合 >>
' 必要なオブジェクトの宣言
Dim cn As New OleDb.OleDbConnection()
Dim cmd As New OleDb.OleDbCommand()
Dim rs As OleDb.OleDbDataReader
' 接続文字列の設定
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:Program FilesDevStudioVBbiblio.mdb"
' 接続を開く
cn.Open()
' コマンドの設定
cmd = cn.CreateCommand()
cmd.CommandText = "select Name from Publishers where City='東京'"
' コマンドを実行してリーダーを設定する
rs = cmd.ExecuteReader()
' 一行ずつリーダーを読み込む
While rs.Read()
' Nameフィールドの値をリストボックスに追加する
lstRecord.Items.Add(rs.Item("Name"))
End While
<< SQL-Serverの場合 >>
' SQL接続用のオブジェクトを宣言する
Dim cn As New SqlClient.SqlConnection()
Dim cmd As New SqlClient.SqlCommand()
Dim dr As SqlClient.SqlDataReader
'接続文字列を指定する
cn.ConnectionString = "Data Source=(local);Initial Catalog=pubs;User ID=sa;Password=;"
'Windows NT認証を利用する場合は以下の文字列を使用
'cn.ConnectionString = "Data Source=(local);Initial Catalog=pubs;Integrated Security=SSPI;"
'接続を確立する
cn.Open()
'接続済みの Connection を指定する
cmd.Connection = cn 'あるいは cmd = cn.CreateCommand
'クエリ文字列を指定する
cmd.CommandText = "select pub_name from publishers order by country,pub_id"
'クエリを実行して DataReader を確立する
dr = cmd.ExecuteReader
'DataReaderから1行ずつ読み込む
Do While (dr.Read())
'リストボックスに pub_name フィールドの内容を追加する
ListBox1.Items.Add(dr.Item("pub_name"))
Loop
<まとめ>
宣言とデータベース固有の接続、関数などの使用の制限を受ける。
※宣言は、「OleDb.OleDbConnection()」と「SqlClient.SqlConnection()」です。
===== 言語が異なる =====
ここでは、詳しく書きませんが、同じミドルウェア、同じデータベースより言語が異なる場合は、ミドルウェアとデータベースが同じなので、流れはどの言語を使用しても同じとなります。
後は、言語仕様の書き方に依存します。
VB.NET では「Nothing」が、VC.NETでは「null」という感じです。
<総合のまとめ>
プログラマーであれば、仕様言語、ミドルウェア、データベースを別々と捉えて、個別に覚えることが必要になります。
後は、それに合わせて覚えて、使いこなすことです。
※COBOLの場合は、データベースではなくてファイルになりますので注意してください。
他の言語から、COBOLのファイルへと通信が可能であれば、操作は可能になります。
例:オフコンのCOBOLのファイルに、パソコンのAccessからミドルウェアのODBCよりCOBOLのファイルに接続して、操作は可能になります。
常識と言えば常識ですが・・・。 当たり前のことを当たり前に書きました。