Archive for 9月, 2012
-
Hello, ODBC(PHP) World!
Posted on 9月 30th, 2012 by cx20
ODBC
ODBC(Open Database Connectivity)は、マイクロソフト社が提唱した DBMS 接続用の API 仕様である。
DBMS の差異は ODBC ドライバによって吸収される為、ODBC の手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。ODBCドライバ ファイル Microsoft Access Driver (*.mdb) ODBCJT32.DLL Microsoft Text Driver (*.txt; *.csv) ODBCJT32.DLL Microsoft Excel Driver (*.xls) ODBCJT32.DLL Microsoft dBase Driver (*.dbf) ODBCJT32.DLL Microsoft ODBC for Oracle MSORCL32.DLL Microsoft Paradox Driver (*.db ) ODBCJT32.DLL SQL Server SQLSRV32.DLL Microsoft Access Driver (*.mdb, *.accdb) ACEODBC.DLL SQL Server Native Client 10.0 SQLNCLI10.DLL ソースコード(PHP + ODBC + SQL Server)
<?php $cn = odbc_connect("Driver={SQL Server};Server=(local)", "sa", "P@ssW0rd"); $rs = odbc_exec($cn, "SELECT 'Hello, ODBC World' AS Message"); while (odbc_fetch_row($rs)) { $result = odbc_result($rs, "Message"); echo "Message", "n"; echo "-------------------n"; echo $result, "n"; } odbc_close($cn); ?>
実行方法(Windows)
C:¥> php -f hello.php
実行結果
Message ------------------ Hello, ODBC World!
-
Hello, ADO(PHP) World!
Posted on 9月 29th, 2012 by cx20
ADO(PHP)
ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。プロバイダ名 表示名 説明 MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース なお、PHP 5.4.5 / 5.3.15 より、COM サポートは既定では組み込まれていない為、使用するには、以下の設定を追加する必要がある。
PHP 設定
ソースコード(PHP + ADO + OLEDB + Jet データベース)
<?php $cn = new COM("ADODB.Connection"); $cn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.Hello.mdb"); $rs = $cn->Execute("SELECT 'Hello, ADO World!' AS Message"); while (!$rs->EOF) { echo $rs->Fields[0]->name, "n"; echo "-------------------n"; echo $rs->Fields[0]->value, "n"; $rs->MoveNext(); } $rs->Close(); $cn->Close(); ?>
ソースコード(PHP + ADO + OLEDB + ACE データベース)
<?php $cn = new COM("ADODB.Connection"); $cn->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.Hello.accdb"); $rs = $cn->Execute("SELECT 'Hello, ADO World!' AS Message"); while (!$rs->EOF) { echo $rs->Fields[0]->name, "n"; echo "-------------------n"; echo $rs->Fields[0]->value, "n"; $rs->MoveNext(); } $rs->Close(); $cn->Close(); ?>
ソースコード(PHP + ADO + OLEDB + SQL Server)
<?php $cn = new COM("ADODB.Connection"); $cn->Open("Provider=SQLOLEDB;SERVER=(local);DATABASE=master", "sa", "P@ssW0rd"); $rs = $cn->Execute("SELECT 'Hello, ADO World!' AS Message"); while (!$rs->EOF) { echo $rs->Fields[0]->name, "n"; echo "-------------------n"; echo $rs->Fields[0]->value, "n"; $rs->MoveNext(); } $rs->Close(); $cn->Close(); ?>
ソースコード(PHP + ADO + OLEDB + Oracle)
<?php $cn = new COM("ADODB.Connection"); $cn->Open("Provider=MSDAORA;Data Source=ORCL", "scott", "tiger"); $rs = $cn->Execute("SELECT 'Hello, ADO World!' AS Message FROM DUAL"); while (!$rs->EOF) { echo $rs->Fields[0]->name, "n"; echo "-------------------n"; echo $rs->Fields[0]->value, "n"; $rs->MoveNext(); } $rs->Close(); $cn->Close(); ?>
実行方法(Windows)
C:¥> php -f hello.php
実行結果
Message ----------------- Hello, ADO World!
-
Hello, PDO(PHP) World!
Posted on 9月 28th, 2012 by cx20
PDO
SQL Server Driver for PHP はマイクロソフト社より提供されている PHP 向けの SQL Server ドライバである。
ドライバの形式として、PHP 拡張形式と PDO(PHP Data Object)形式の2種類が存在する。
以下は PDO 形式の SQL Server Driver の例となっている。なお、SQL Server ドライバは既定では組み込まれていない為、使用するには、以下の設定を追加する必要がある。
PHP 設定(PHP 5.4 / スレッドセーフのドライバを指定した場合)
ソースコード(PHP + PHP 拡張 + SQL Server)
<?php $dbh = new PDO('sqlsrv:server=(local);database=master', 'sa', 'P@ssW0rd'); $sql = "SELECT 'Hello, PDO World!' AS Message"; foreach ($dbh->query($sql) as $row) { echo "Messagen"; echo "-------------------n"; echo $row[0]; } $dbh = null; ?>
実行方法
C:¥> php hello.php
実行結果
Message ------------------- Hello, PDO World!
-
Hello, SQL Server(PHP) World!
Posted on 9月 27th, 2012 by cx20
SQL Server Driver for PHP
SQL Server Driver for PHP はマイクロソフト社より提供されている PHP 向けの SQL Server ドライバである。
ドライバの形式として、PHP 拡張形式と PDO(PHP Data Object)形式の2種類が存在する。
以下は PHP 拡張版の SQL Server Driver の例となっている。なお、SQL Server ドライバは既定では組み込まれていない為、使用するには、以下の設定を追加する必要がある。
PHP 設定(PHP 5.4 / スレッドセーフのドライバを指定した場合)
ソースコード(PHP + PHP 拡張 + SQL Server)
<?php $serverName = "(local)"; $connectionInfo = array( "UID"=>"sa", "PWD"=>"P@ssW0rd", "Database"=>"master" ); $conn = sqlsrv_connect( $serverName, $connectionInfo ); $stmt = sqlsrv_query( $conn, "SELECT 'Hello, SQL Server(PHP) World!' AS Message" ); while( $row = sqlsrv_fetch_array( $stmt ) ) { echo "Messagen"; echo "-------------------n"; echo $row[0]; } sqlsrv_free_stmt( $stmt ); sqlsrv_close( $conn ); ?>
実行方法
C:¥> php hello.php
実行結果
Message ------------------- Hello, SQL Server(PHP) World!
-
Hello, ODBC(Python) World!
Posted on 9月 26th, 2012 by cx20
DB API
ODBC(Open Database Connectivity)は、マイクロソフト社が提唱した DBMS 接続用の API 仕様である。
DBMS の差異は ODBC ドライバによって吸収される為、ODBC の手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。ODBCドライバ ファイル Microsoft Access Driver (*.mdb) ODBCJT32.DLL Microsoft Text Driver (*.txt; *.csv) ODBCJT32.DLL Microsoft Excel Driver (*.xls) ODBCJT32.DLL Microsoft dBase Driver (*.dbf) ODBCJT32.DLL Microsoft ODBC for Oracle MSORCL32.DLL Microsoft Paradox Driver (*.db ) ODBCJT32.DLL SQL Server SQLSRV32.DLL Microsoft Access Driver (*.mdb, *.accdb) ACEODBC.DLL SQL Server Native Client 10.0 SQLNCLI10.DLL Python DB API は Python 向けの Database Interface(API)である。
ODBC ドライバを介することで、様々な DBMS への接続が可能となっている。ソースコード(Python + DB API + ODBC + SQL Server)
import pyodbc cn = pyodbc.connect("DRIVER={SQL Server};SERVER=(local);DATABASE=master;UID=sa;PWD=P@ssW0rd") cur = cn.cursor() cur.execute("SELECT 'Hello, ODBC World!' AS Message") rows = cur.fetchall() for row in rows: print "Message" print "-------------------" print row[0] cur.close() cn.close()
実行方法(Windows)
C:¥> python hello.py
実行結果
Message ----------------- Hello, ODBC World!
-
Hello, ADO(Python) World!
Posted on 9月 25th, 2012 by cx20
ADO(Python)
ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。プロバイダ名 表示名 説明 MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース 以下は Python による ADO ライブラリの使用例となっている。
ソースコード(Python + ADO + OLEDB + Jet データベース)
import win32com.client cn = win32com.client.Dispatch('ADODB.Connection') cn.Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.hello.mdb" ) rs = cn.Execute( "SELECT 'Hello, ADO World!' AS Message" )[0] while not rs.EOF: print rs.Fields(0).Name print "-------------------" print rs.Fields(0).Value rs.MoveNext() rs.Close() cn.Close()
ソースコード(Python + ADO + OLEDB + ACE データベース)
import win32com.client cn = win32com.client.Dispatch('ADODB.Connection') cn.Open( "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.hello.accdb" ) rs = cn.Execute( "SELECT 'Hello, ADO World!' AS Message" )[0] while not rs.EOF: print rs.Fields(0).Name print "-------------------" print rs.Fields(0).Value rs.MoveNext() rs.Close() cn.Close()
ソースコード(Python + ADO + OLEDB + SQL Server)
import win32com.client cn = win32com.client.Dispatch('ADODB.Connection') cn.Open( "Provider=SQLOLEDB;SERVER=(local);DATABASE=master", "sa", "P@ssW0rd" ) rs = cn.Execute( "SELECT 'Hello, ADO World!' AS Message" )[0] while not rs.EOF: print rs.Fields(0).Name print "-------------------" print rs.Fields(0).Value rs.MoveNext() rs.Close() cn.Close()
ソースコード(Python + ADO + OLEDB + Oracle)
import win32com.client cn = win32com.client.Dispatch('ADODB.Connection') cn.Open( "Provider=MSDAORA;Data Source=ORCL", "scott", "tiger" ) rs = cn.Execute( "SELECT 'Hello, ADO World!' AS Message FROM DUAL" )[0] while not rs.EOF: print rs.Fields(0).Name print "-------------------" print rs.Fields(0).Value rs.MoveNext() rs.Close() cn.Close()
実行方法(Windows)
C:¥> python hello.py
実行結果
Message ----------------- Hello, ADO World!
-
Hello, DB API(Python) World!
Posted on 9月 24th, 2012 by cx20
DB API
Python DB API は Python 向けの Database Interface(API)である。
各データベースドライバを介することで、様々な DBMS への接続が可能となっている。ソースコード(Python + DB API + MySQL)
import MySQLdb cn = MySQLdb.connect(db="test", host="127.0.0.1", port=3306, user="root", passwd="P@ssW0rd") cur = cn.cursor() cur.execute("SELECT 'Hello, DB API World!' AS Message") rows = cur.fetchall() for row in rows: print "Message" print "-------------------" print row[0] cur.close() cn.close()
実行方法(Windows)
C:¥> python hello.py
実行結果
Message ----------------- Hello, DB API World!
-
Hello, ODBC(Ruby) World!
Posted on 9月 23rd, 2012 by cx20
DBI
ODBC(Open Database Connectivity)は、マイクロソフト社が提唱した DBMS 接続用の API 仕様である。
DBMS の差異は ODBC ドライバによって吸収される為、ODBC の手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。ODBCドライバ ファイル Microsoft Access Driver (*.mdb) ODBCJT32.DLL Microsoft Text Driver (*.txt; *.csv) ODBCJT32.DLL Microsoft Excel Driver (*.xls) ODBCJT32.DLL Microsoft dBase Driver (*.dbf) ODBCJT32.DLL Microsoft ODBC for Oracle MSORCL32.DLL Microsoft Paradox Driver (*.db ) ODBCJT32.DLL SQL Server SQLSRV32.DLL Microsoft Access Driver (*.mdb, *.accdb) ACEODBC.DLL SQL Server Native Client 10.0 SQLNCLI10.DLL DBI は Ruby 向けの Database Interface(API)である。
DBI 用 ODBC ドライバを介することで、様々な DBMS への接続が可能となっている。ソースコード(Ruby + DBI + ODBC + SQL Server)
require 'rubygems' require "dbi" dbh = DBI.connect("DBI:ODBC:Driver={SQL Server};Server=(local);DATABASE=master", "sa", "P@ssW0rd") sth = dbh.prepare("SELECT 'Hello, DBI World' AS Message") sth.execute() while row = sth.fetch do print "Message", "n"; print "-------------------n"; print row[0] end sth.finish dbh.disconnect
ライブラリ導入方法
C:¥> gem install dbi C:¥> gem install dbd-odbc
以下のエラーが出る場合は、odbc.so と odbc_utf8.so が足りていない可能性がある為、ODBC Binding for Ruby より i386-msvcrt-ruby-odbc.zip を入手し、%RUBY_HOME%librubysite_ruby1.8i386-msvcrt にコピーする必要がある。
C:/ruby-1.8/lib/ruby/gems/1.8/gems/dbi-0.4.5/lib/dbi.rb:300:in `load_driver': Unable to load driver 'ODBC' (underlying error: uninitialized constant DBI::DBD::ODBC) (DBI::InterfaceError) from C:/ruby-1.8/lib/ruby/1.8/monitor.rb:242:in `synchronize' from C:/ruby-1.8/lib/ruby/gems/1.8/gems/dbi-0.4.5/lib/dbi.rb:242:in `load_driver' from C:/ruby-1.8/lib/ruby/gems/1.8/gems/dbi-0.4.5/lib/dbi.rb:160:in `_get_full_driver' from C:/ruby-1.8/lib/ruby/gems/1.8/gems/dbi-0.4.5/lib/dbi.rb:145:in `connect' from hello.rb:3
なお、2012.09 現在、1.9 版のライブラリは提供されていない模様。
実行方法(Windows)
C:¥> ruby hello.rb
実行結果
Message ----------------- Hello, DBI World!
-
Hello, ADO(Ruby) World!
Posted on 9月 22nd, 2012 by cx20
ADO(Ruby)
ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。プロバイダ名 表示名 説明 MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース ソースコード(Ruby + ADO + OLEDB + Jet データベース)
require 'win32ole' cn = WIN32OLE.new("ADODB.Connection") cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\Hello.mdb" rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message") while !rs.EOF print rs.Fields[0].name + "n" print "-------------------n" print rs.Fields[0].value + "n" rs.MoveNext end rs.Close cn.Close
ソースコード(Ruby + ADO + OLEDB + ACE データベース)
require 'win32ole' cn = WIN32OLE.new("ADODB.Connection") cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.\Hello.accdb" rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message") while !rs.EOF print rs.Fields[0].name + "n" print "-------------------n" print rs.Fields[0].value + "n" rs.MoveNext end rs.Close cn.Close
ソースコード(Ruby + ADO + OLEDB + SQL Server)
require 'win32ole' cn = WIN32OLE.new("ADODB.Connection") cn.Open "Provider=SQLOLEDB;SERVER=(local);DATABASE=master", "sa", "P@ssW0rd" rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message") while !rs.EOF print rs.Fields[0].name + "n" print "-------------------n" print rs.Fields[0].value + "n" rs.MoveNext end rs.Close cn.Close
ソースコード(Ruby + ADO + OLEDB + Oracle)
require 'win32ole' cn = WIN32OLE.new("ADODB.Connection") cn.Open "Provider=MSDAORA;Data Source=ORCL", "scott", "tiger" rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message") while !rs.EOF print rs.Fields[0].name + "n" print "-------------------n" print rs.Fields[0].value + "n" rs.MoveNext end rs.Close cn.Close
実行方法(Windows)
C:¥> ruby hello.rb
実行結果
Message ----------------- Hello, ADO World!
-
Hello, DBI(Ruby) World!
Posted on 9月 21st, 2012 by cx20
DBI
DBI は Ruby 向けの Database Interface(API)である。
各データベースドライバを介することで、様々な DBMS への接続が可能となっている。ソースコード(Perl + DBI + MySQL)
require "dbi" dbh = DBI.connect("dbi:Mysql:test:localhost", "root", "P@ssW0rd") sth = dbh.prepare("SELECT 'Hello, DBI World' AS Message") sth.execute() while row = sth.fetch do print "Message", "n"; print "-------------------n"; print row[0] end sth.finish dbh.disconnect
ライブラリ導入方法
C:¥> gem install dbi C:¥> gem install dbd-mysql
実行方法(Windows)
C:¥> ruby hello.rb
実行結果
Message ----------------- Hello, DBI World!