亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3387 | 回復(fù): 1
打印 上一主題 下一主題

使用Ruby DBI模塊 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-03-02 12:04 |只看該作者 |倒序?yàn)g覽
使用Ruby DBI模塊







原本的DBI模塊的安裝教程:

1.安裝
首先,我是使用mysql進(jìn)行測試的,你的機(jī)器上需要安裝mysql數(shù)據(jù)庫。
然后執(zhí)行:
gem install mysql

到rubyforge下載ruby-DBI,解壓后cd到目錄運(yùn)行如下命令:
ruby setup.rb config --with=dbi,dbd_mysql
ruby setup.rb setup
ruby setup.rb install

完整的setup命令參數(shù)參考DBI的doc

2.完整例子
DBI是一類似于ODBC的開發(fā)式的統(tǒng)一的數(shù)據(jù)庫編程接口,結(jié)構(gòu)層次上可以分為兩層:
1.Database Interface——數(shù)據(jù)庫接口層,與數(shù)據(jù)庫無關(guān),提供與數(shù)據(jù)庫無關(guān)的標(biāo)準(zhǔn)接口
2.Database Driver——數(shù)據(jù)庫驅(qū)動(dòng),與數(shù)據(jù)庫相關(guān)

DBI也是很簡單易用的,一個(gè)完整的使用例子,對于初學(xué)者可能有點(diǎn)幫助:
  1. require 'dbi'
  2. begin
  3.   #連接數(shù)據(jù)庫
  4.   dbh=DBI.connect("DBI:Mysql:dbi_test:localhost","root","")
  5.   
  6.   dbh.columns("simple").each do |h|
  7.     p h
  8.   end
  9.   #示范3種事務(wù)處理方式
  10.   #手動(dòng)commit
  11.   dbh["AutoCommit"]=false
  12.   1.upto(10) do |i|
  13.     sql = "insert into simple (name, author) VALUES (?, ?)"
  14.     dbh.do(sql, "Song #{i}", "#{i}")
  15.   end
  16.   dbh.commit
  17.   
  18.   #使用transaction方法
  19.   dbh.transaction do |dbh|
  20.     1.upto(10) do |i|
  21.       sql = "insert into simple (name, author) VALUES (?, ?)"
  22.       dbh.do(sql, "Song #{i}", "#{i}")
  23.     end
  24.   end
  25.   
  26.   #使用SQL語句
  27.   dbh.do("SET AUTOCOMMIT=0")
  28.   dbh.do("BEGIN")
  29.   dbh["AutoCommit"]=false
  30.   dbh.do("UPDATE simple set name='test' where id='1'")
  31.   dbh.do("COMMIT")
  32.   
  33.   #查詢
  34.   sth=dbh.execute("select count(id) from simple")
  35.   puts "bookCount:#{sth.fetch[0]}"
  36.   sth.finish
  37.   begin
  38.     sth=dbh.prepare("select * from simple")
  39.     sth.execute
  40.     while row=sth.fetch do
  41.       p row
  42.     end
  43.     sth.finish
  44.   rescue
  45.   end
  46.   
  47.   #上面這段查詢可以改寫為:
  48.   #dbh.select_all("select * from simple") do |row|
  49.   #   p row
  50.   #end   
復(fù)制代碼
#使用工具類輸出xml格式結(jié)果集以及測量查詢時(shí)間
  1.   sql="select * from simple"
  2.   mesuretime=DBI::Utils::measure do
  3.     sth=dbh.execute(sql)
  4.   end
  5.   puts "SQL:#{sql}"
  6.   puts "Time:#{mesuretime}"
  7.   rows=sth.fetch_all
  8.   col_names=sth.column_names
  9.   sth.finish
  10.   puts DBI::Utils::XMLFormatter.table(rows)
  11.   
  12.   dbh.do("delete from simple")
  13. rescue  DBI::DatabaseError=>e
  14.   puts "error code:#{e.err}"
  15.   puts "Error message:#{e.errstr}"
  16. ensure
  17.   dbh.disconnect if dbh
  18. end
復(fù)制代碼
出現(xiàn)問題:
但是每次我執(zhí)行第一步的時(shí)候就會(huì)出現(xiàn) config: unknown option --with=dbi,dbd_mysql Try 'ruby setup.rb --help' for detailed usage.
原因分析:
這是由于dbi版本問題造成的。
因此新版本的安裝方式如下:
一般方法是:下載dbi(tar.gz或zip格式),CMD下切換到解壓的目錄,使用以下命令:
  1. ruby setup.rb config (或ruby setup.rb config --with=dbi,dbd_mysql)

  2. ruby setup.rb setup

  3. ruby setup.rb install
復(fù)制代碼
報(bào)錯(cuò):


ir
  1. b(main):001:0> require 'dbi'
  2. LoadError: no such file to load -- deprecated
  3.         from <internal:lib/rubygems/custom_require>:29:in `require'
  4.         from <internal:lib/rubygems/custom_require>:29:in `require'
  5.         from C:/MyProgramFiles/Ruby192/lib/ruby/site_ruby/1.9.1/dbi.rb:48:in `<t
  6. op (required)>'
  7.         from <internal:lib/rubygems/custom_require>:29:in `require'
  8.         from <internal:lib/rubygems/custom_require>:29:in `require'
  9.         from (irb):1
  10.         from C:/MyProgramFiles/Ruby192/bin/irb:12:in `<main>'
  11. irb(main):002:0>
復(fù)制代碼
這個(gè)問題比較簡單,只要安裝一個(gè)deprecated包,于是我下載了deprecated-3.0.0.gem,安裝之后還是報(bào)錯(cuò)。
  1. irb(main):001:0> require 'dbi'
  2. NoMethodError: undefined method `deprecate' for DBI::Date:Class
  3.         from C:/MyProgramFiles/Ruby192/lib/ruby/site_ruby/1.9.1/dbi/utils/date.r
  4. b:57:in `<class:Date>'
  5.         from C:/MyProgramFiles/Ruby192/lib/ruby/site_ruby/1.9.1/dbi/utils/date.r
  6. b:7:in `<module:DBI>'
  7.         from C:/MyProgramFiles/Ruby192/lib/ruby/site_ruby/1.9.1/dbi/utils/date.r
  8. b:1:in `<top (required)>'
  9.         from <internal:lib/rubygems/custom_require>:29:in `require'
  10.         from <internal:lib/rubygems/custom_require>:29:in `require'
  11.         from C:/MyProgramFiles/Ruby192/lib/ruby/site_ruby/1.9.1/dbi/utils.rb:56:
  12. in `<top (required)>'
  13.         from <internal:lib/rubygems/custom_require>:29:in `require'
  14.         from <internal:lib/rubygems/custom_require>:29:in `require'
  15.         from C:/MyProgramFiles/Ruby192/lib/ruby/site_ruby/1.9.1/dbi.rb:50:in `<t
  16. op (required)>'
  17.         from <internal:lib/rubygems/custom_require>:29:in `require'
  18.         from <internal:lib/rubygems/custom_require>:29:in `require'
  19.         from (irb):1
  20.         from C:/MyProgramFiles/Ruby192/bin/irb:12:in `<main>'
  21. irb(main):002:0>
復(fù)制代碼
再次Google,居然是deprecated-3.0.0.gem太新了!換成deprecated-2.0.1.gem就可以了。
  1. irb(main):001:0> require 'dbi'  
  2. => true  
  3. irb(main):002:0>
復(fù)制代碼
這個(gè)問題還是比較容易解決的,不過要是出現(xiàn)如下問題就不好解決了:
  1. <internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- parsedate (LoadError)
  2.         from <internal:lib/rubygems/custom_require>:29:in `require'
  3.         from c:/Program Files (x86)/RailsInstaller/Ruby1.9.2/lib/ruby/site_ruby/1.9.1/dbi/sql.rb:9:in `<module:DBI>'
  4.         from c:/Program Files (x86)/RailsInstaller/Ruby1.9.2/lib/ruby/site_ruby/1.9.1/dbi/sql.rb:7:in `<top (required)>'
  5.         from <internal:lib/rubygems/custom_require>:29:in `require'
  6.         from <internal:lib/rubygems/custom_require>:29:in `require'
  7.         from c:/Program Files (x86)/RailsInstaller/Ruby1.9.2/lib/ruby/site_ruby/1.9.1/dbi.rb:37:in `<top (required)>'
  8.         from <internal:lib/rubygems/custom_require>:29:in `require'
  9.         from <internal:lib/rubygems/custom_require>:29:in `require'
  10.         from E:/Program/Eclipse/RubyTest/dbi.rb:1:in `<main>'
復(fù)制代碼
經(jīng)過查詢之后,才發(fā)現(xiàn)原來parsedate在ruby1.9.2中已經(jīng)被廢除了,現(xiàn)在使用的是date。因此這個(gè)版本問題真的是沒有辦法進(jìn)行解決啦。我現(xiàn)在正在考慮要不要把ruby降級來解決這個(gè)問題。嘗試中,后面如果解決了會(huì)進(jìn)行更新。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2012-03-02 12:05 |只看該作者
謝謝分享
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP