这段时间在学习Ruby,只是刚才入门而已。 mysql
正好今天学习ruby的持久化方式,使用的是MySQL数据库。按照书本的方式,仅仅的require “mysql” (引人mysql)发现报找到不到mysql文件。网上百度才知道没有安装驱动包(其实我就怀疑那本书有问题,怎么不安装数据库驱动包就直接能够使用呢?暗暗的鄙视下) sql
(1)安装MySQL驱动包,在http://rubyforge.org/projects/mysql-win 下载驱动包,而后使用命令行方式进入放该驱动包的文件夹,使用(gem install 驱动包名) 命令进行安装 数据库
(2)在Mysql安装目录的bin或者lib 目录下,找到 libmySQL.dll ,将该文件Copy到 Ruby安装目录的 bin目录中。注:放下这样仍是会报那个错误,而后把 require “mysql” 中的双引号改成单引号就不会出错了,不知道是否是个人操做缘由形成的。 ruby
----------------------------------------------- 学习
进行上面的步骤后发现仍是不能链接Mysql数据库,继续找问题,而后发现: 测试
(3)还要安装rdoc,到http://rubyforge.org/frs/?group_id=627下载,而后使用命令行方式进入放该文件的文件夹,使用(gem install 驱动包名) 命令进行安装 ui
通过以上三个步骤就能够使用ruby操做MySQL数据库了 spa
附测试代码: .net
class Score
def initialize(id, subject, score, student_name, explain)
@id = id
@subject = subject
@score = score
@student_name = student_name
@explain = explain
end
attr_accessor :id,:subject,:score,:student_name,:explain
end
require 'rubygems'
require 'mysql'
def createSQL(score)
"insert into score(id,subject,score,student_name) "+
"values(#{score.id},'#{score.subject}',#{score.score},'#{score.student_name}')"
end
def saveScore(dbh,score)
sql = createSQL(score)
puts sql
dbh.query(sql)
if(dbh.affected_rows == 1)
puts "学生#{score.student_name}的成绩加入到数据库"
end
end
#准备向数据库插入的数据
peter = Score.new(1,"math",83,"peter","ddd")
hello = Score.new(2,"math",80,"hello","ccc")
world = Score.new(3,"math",89,"world","cccc")
eral = Score.new(4,"math",50,"eral","aaaaaaaa")
marry = Score.new(5,"math",100,"marry","bbbbbbbbb")
#建立数据库链接
begin
dbh = Mysql.real_connect("localhost","root","root","banji",3306)
saveScore(dbh,peter)
saveScore(dbh,hello)
saveScore(dbh,world)
saveScore(dbh,eral)
saveScore(dbh,marry)
rescue Mysql::Error =>e
puts e
end
命令行