ruby on rails安装mysql数据库,在系统里安装mysql:下载mysql软件,在百度上很多下载地址可以下载,或者进入mysql中文官方网站下
ruby on rails安装mysql数据库
1、在系统里安装mysql:下载mysql软件,在百度上很多下载地址可以下载,或者进入mysql中文官方网站下载安装软件,我选择的是5.1.62版本的
安装mysql,设置默认字符集为utf-8
将mysql安装目录(默认c:/program files/mysql)之bin目录下的libmysql.dll拷贝至c:/ruby/bin目录下
2、安装mysql相关驱动:
gem install mysql-2.8.1-x86-mingw32.gem
3、将ruby安装目录的lib/ruby/gems/1.8/gems/mysql-2.7.1-mswin32/ext/目录下的mysql_api文件拷贝至ruby安装目录下的/lib/ruby/site_ruby/1.8/i386-msvcrt/目录下。
4、测试ruby连接mysql
新建文本test_mysql.rd后输入代码:
require mysql
puts(hello,mysql)
命令行执行ruby test_mysql.rd
输出结果:
hello,mysql
则mysql连接成功
写一段代码:
require 'dbcon'
begin
dbh = mysql.real_connect(localhost, root, sa,makedish, 3306)------# 这里调用mysql模块的real_connect方法。连接数据库本机:用户名: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
ruby当中对数据库存在两种操作:一种是不用返回结果集的(例如insert,update,delete等等)一种是需要返回结果集的(如select show等)。对于不返回结果集的操作,我们只需要使用dbh.query方法,,传入需要执行的sql语句执行即可。
对于另一种需要返回结果集的则相对麻烦一些。执行完上面类似的语句之后,我们需要对结果集进行处理。我们可以将结果集一数组或者hash形式展现。这里我们使用hash方式展现。
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
each_hash方法当中添加with_table = true参数可以保证在执行多表查询的时候,多张表具有相同字段的尴尬。这样我们hash的key值就可以用“表名.列名”的形式出现。