前提条件 Eclipse は Pleiades Eclipse 4.7 Oxygen です。前提となる環境は以下を参照して下さい。 Pleiades Eclipse 4.7 Oxygen 2 Windows 64bit Ultimate Full Edition のインストールといろいろな準備 Pleiades Oxygen 2 の XAMPP 内の MySQL を利用可能にしてテストデータ(販売管理)を登録する ▼ プロジェクトの作成方法はこちらを参照して下さい Pleiades Eclipse 4.7 Oxygen で Ruby を使って MySQL にアクセスする Connector/ODBC 5.3.10 ADO から接続する場合、純粋に Windows からのアクセスになるので ODBC ドライバが必要になります。Ruby が 64ビットならば、ODBC ドライバも 64ビット用が必要になります。 ダウンロードページ com_ado_mysql 以下は、ADO + COM で行われる標準的なレコードセットの読み込みと同時更新の処理です。 特徴的なのは、レコードセットの Fields コレクション( Field オブジェクト )を使用して値を直接セットして一行づつレコードを更新するところです。
require 'win32ole' adOpenDynamic = 2 adLockOptimistic = 3 cn = WIN32OLE.new('ADODB.Connection') rs = WIN32OLE.new('ADODB.Recordset') driver = "{MySQL ODBC 5.3 Unicode Driver}" server = "localhost" db = "lightbox" user = "root" pass = "" connectionString = "Provider=MSDASQL;Driver=%s;Server=%s;DATABASE=%s;UID=%s;PWD=%s;" connectionString = format(connectionString, driver,server,db,user,pass) puts connectionString # ************************** # 接続 # ************************** begin cn.Open( connectionString ) rescue => ex print format("%d エラーが発生しました\n%s",ex.errno,ex.error) # 接続エラーの場合は終了 exit! end rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic rs.Open( "select * from 社員マスタ where 社員コード <= '0004' ", cn ) while !rs.EOF do line = "" rs.Fields.each do |field| line << format(" %s |",field.Type) end line.chop! puts line line = "" rs.Fields.each do |field| if field.Type == 202 then line << format(" %s |",field.Value) end if field.Type == 3 then # nil 値あり line << format(" %s |",field.Value.to_s) end if field.Type == 135 then line << field.Value.strftime(" %Y/%m/%d |") end end line.chop! puts line print format("%s,",rs.Fields("社員コード").Value) print format("%s,",rs.Fields("氏名").Value) print format("%s,",rs.Fields("フリガナ").Value) print format("%s,",rs.Fields("所属").Value) print format("%d,",rs.Fields("性別").Value) print format("%d,",rs.Fields("給与").Value) if !rs.Fields("手当").Value.nil? then print format("%d,",rs.Fields("手当").Value) else print "," end print format("%s,",rs.Fields("管理者").Value) print rs.Fields("作成日").Value.strftime("%Y/%m/%d,") print rs.Fields("更新日").Value.strftime("%Y/%m/%d,") print rs.Fields("生年月日").Value.strftime("%Y/%m/%d\n") rs.Fields("管理者").Value = "0001" rs.Update() rs.MoveNext() end # ************************** # 接続解除 # ************************** if cn.State >= 1 then cn.Close() end print("終了しました\n")
CursorTypes, LockTypes, and CursorLocations ※ MySQL は 以下の三つの組み合わせのみ動作 adUseClient/adOpenStatic adUseServer/adOpenForwardOnly adUseServer/adOpenDynamic ※ ADO でデフォルトは adUseServer エディタのタブの設定![]()
![]()
|
【Ruby 2018の最新記事】
- Ruby(mechanize) で Seesaa のエクスポート
- さくらインターネットに Ruby をインストールして mechanize ( 先に nokogiri のインストールが必要でした )
- Ruby + MySQL + IFRAME + Bootstrap : 問い合せ WEB アプリテンプレート
- Ruby 2.4 で GET/POST メソッドを想定した CGI 用のテンプレート改良版( FORM で MySQL 参照と更新 )
- Ruby のエンコーディング( スクリプト・デフォルト・STDIN・STDOUT )
- Ruby 2.4 で GET/POST メソッドを想定した CGI 用の簡易テンプレートを作成してみました
- Windows10 : Ruby で日本語メール送信
- Pleiades Eclipse 4.7 Oxygen で Ruby を使って MySQL にアクセスする