远程访问MYSQL

上一篇 / 下一篇  2010-12-21 14:04:42 / 个人分类:linux&shell编程

Ruby操作MYSQL数据库
方法一:想想java当中操纵数据库首先得需要一个数据库驱动,当然ruby也不例外,自然也需要一个数据库驱动。ruby当中安装数据库驱动我感觉相比较java稍微复杂一点。
    *首先,你需要到[url]http://rubyforge.org/projects/mysql-win[/url]当中去下载一个驱动包mysql-2.7.3-mswin32.gem
    *接着,我们在命令行下,切换到驱动包的安装目录。运行gem install mysql-2.7.3-mswin32.gem。OK驱动安装完毕
      好了,万事具备,只欠东风了。我们要开始写代码了。
[table=95%][tr][td][font=FixedSys]require  'DBcon'
 
例如:connect_mysql("10.255.254.208","writeuser","ddbackend","ProductPage",3306,sql_end)
begin
  dbh = Mysql.real_connect("localhost", "root", "sa","makedish", 3306)   #连接数据库本机:用户名:root密码:sa数据库:makedish端口:3306
  dbh.query("drop table if exists test_foolfish")                                        #ruby执行语句
  dbh.query("create table test_foolfish(id int,name varchar(20))")
  dbh.query("insert into test_foolfish values(1,'你好')")
  dbh.query("insert into test_foolfish values(2,hello)")
  printf "%d rows were insertedn",dbh.affected_rows                        #affected_rows返回受影响的行数
  res=dbh.query("SELECT name FROM test_foolfish")
  puts "===============n"
  res.each_hash(with_table = true) do |row|
    printf "%d,%sn",row["test_rb.id"],row["test_rb.name"]
  end
  puts "===============n"
  puts "Server version:"+dbh.get_server_info
rescue Mysql::Error=>e
  puts "Error code:#{e.errno}"
  puts "Error message:#{e.error}"
  puts "Error SQLSTATE:#{e.sqlstate}" if e.respond_to?("sqlstate")
ensure
  dbh.close if dbh
end [/font][/td][/tr][/table]
研究以上代码,首先我们需要和数据库建立连接:
[code]dbh = Mysql.real_connect("localhost", "root", "sa","makedish", 3306) [/code]
      这里调用Mysql模块的real_connect方法。参数就不用多说了。建立连接后我们就需要对数据库进行相应的操作。
      ruby当中对数据库存在两种操作:一种是不用返回结果集的(例如insert,update,delete等等)一种是需要返回结果集的(如select show等)。对于不返回结果集的操作,我们只需要使用dbh.query方法,传入需要执行的sql语句执行即可.转载自: [url=http://cwgame.byethost16.com/]小站[/url]
      对于另一种需要返回结果集的则相对麻烦一些。执行完上面类似的语句之后,我们需要对结果集进行处理。我们可以将结果集一数组或者hash形式展现。这里我们使用hash方式展现。
[code]res=dbh.query("SELECT name FROM test_foolfish")
  puts "===============\n"
  res.each_hash(with_table = true) do |row|
    printf "%d,%s\n",row["test_rb.id"],row["test_rb.name"]
  end
[/code]
     each_hash方法当中添加with_table = true参数可以保证在执行多表查询的时候,多张表具有相同字段的尴尬。这样我们hash的key值就可以用“表名.列名”的形式出现。
 
方法2:
 
Ruby配置Mysql DBI1、准备工作
Windows下面同样的可以使用,解压以后放入ruby目录,如:C:\ruby\ruby-dbi下。
Ruby配置Mysql DBI2、安装mysql dbi接口,在C:\ruby\ruby-dbi下运行如下命令:
ruby setup.rb config --with=dbi,dbd_mysql //如果使用这个命令不行,使用ruby setup.rb config --with dbi,dbd_mysql运行;
ruby setup.rb setup
ruby setup.rb install
Ruby配置Mysql DBI3、安装mysql需要的lib:
gem installmysql
在提示下面输入2以后,可以看见安装成功。
Ruby配置Mysql DBI4、copy dll文件到ruby目录:
在mysql数据库目录下找到libmySQL.dll,Copy到c:\ruby\bin目录下。
Ruby配置Mysql DBI5。安装完成,可以使用。
测试代码如下:
require "dbi"
thedbi=DBI.connect("dbi:Mysql:test:localhost","root","")
如果执行成功,mysql dbi就安装成功。

TAG:

 

评分:0

我来说两句

Open Toolbar