`

windows上使用mysql2

    博客分类:
  • ruby
 
阅读更多
想在windows上做ruby应该的可能很底,ruby服务器在windows上运行速度非常慢而且配置相当麻烦,做桌面开发就更困难了,所以能使用ruby的地方基本停留在个人工具上,最近有些兴趣用ruby生成一些java开发代码,发现效果还不错,打包工具使用ocra,主要涉及到的连接数据库的问题, 在oracle中,使用的是dbi+oci8;在mysql中则要麻烦一点,因为那个mysql gem很久没更新了,且存在编码问题。所以得折腾下,使用mysql2,mysql2的安装可见下面文章:
http://rubyer.me/blog/138
但这个mysql2一般是作为rails3的一部分,主要在activerecord中使用,所以基本上没什么有用的文档,好在其本身使用也不复杂,看了一下它的example,然后写了个程序试了下,居然能用:
require 'mysql2'

client = Mysql2::Client.new(:username => "root",:password=>"200000",:database=>"test")
results = client.query("select * from area");
results.each do |hash|
  puts hash.map { |k,v| "#{k} = #{v}" }.join(", ")
end

上面代码中Client默认连接主机为localhost,端口为3306,results很简单,代码如下:
module Mysql2
  class Result
    include Enumerable
  end
end

即,Result就是个Enumerable。

但是这个Result API异常的简单,没有提供任何额外的方法,比如dbi gem还提供了如column_info这类的方法,但是mysql2并没有提供,只能手动查询获取,不过这样这好,要什么就查什么,没有什么限制,如在mysql中查询相应表的列信息可以这样:
SELECT  COLUMN_NAME,COLUMN_TYPE,COLUMN_COMMENT  FROM  information_schema.COLUMNS   WHERE TABLE_NAME='area'

获取表信息查找information_schema.TABLES即可。

通过执行SQL语句还获取列信息虽然麻烦点,但全面完整。其最大的缺点就是不能跨数据库,当然稍微高级一点的用法都是数据库特有的,没办法。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics