今天闲来无事,就想起来继续学习学习ruby。看看ruby的sql操作。ms在ruby当中利用mysql的比较的多。好吧,我们就开始来用mysql吧。
想想java当中操纵数据库首先得需要一个数据库驱动,当然ruby也不例外,自然也需要一个数据库驱动。ruby当中安装数据库驱动我感觉相比较java稍微复杂一点。
- 首先,你需要在你的mysql数据库的bin目录下将文件libmySQL.dll拷贝到ruby安装目录下的bin文件下。
- 其次,你需要到http://rubyforge.org/projects/mysql-win当中去下载一个驱动包mysql-2.7.3-mswin32.gem
- 接着,我们在命令行下,切换到驱动包的安装目录。运行 gem install mysql-2.7.3-mswin32.gem。OK驱动安装完毕
- 最后,我们需要在ruby安装目录的\lib\ruby\gems\1.8\gems\mysql-2.7.3-x86-mswin32\ext下将mysql.so文件拷贝到ruby安装目录下的\lib\ruby\site_ruby\1.8\i386-msvcrt文件当中。
好了,万事具备,只欠东风了。我们要开始写代码了。
require 'DBcon'
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 inserted\n",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,%s\n",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
研究以上代码,首先我们需要和数据库建立连接:
dbh = Mysql.real_connect("localhost", "root", "sa","makedish", 3306)
这里调用Mysql模块的real_connect方法。参数就不用多说了。建立连接后我们就需要对数据库进行相应的操作。
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值就可以用“表名.列名”的形式出现。
怎么样,很简单吧。试一试吧。今天也只看了一点点。等研究多了,再发布点新东西
分享到:
相关推荐
Ruby 版数据库连接池, 可以参考。 数据库是postgresql
Ruby 连接数据库资源汇总。包括有:Ruby连接Mysql,oracle,postgreSQL,sqlite等包.还有ruby/DBI. 有GEM包,也有源代码包。
Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf
mysql2 - 一个现代的、简单和非常快速的Ruby Mysql 库
本文简单介绍了Ruby On Rails的安装步骤以及MySQL数据库的配置方法,并介绍了几个官方阅读资源。
ruby on rails 安装 组件下载 连接mysql mssql等数据库 包含一个完整的一对多数据库例子方案
Shift - 一个帮助您在MySQL数据库中运行模式迁移
简单的 S3 备份一个简单的 Ruby 脚本,用于将 MySQL 数据库表、MongoDB 数据库、完整目录和单个文件组备份到 Amazon S3(简单存储服务)。 使用步骤: 设置 Amazon S3 账户: : 安装 aws/s3 Ruby gem: : 将 ...
本人学习总结的ruby on rails 3.1.0数据库类查询方法,比较全了
该HTTP服务器提供直接连接到MySQL数据库的HTTP接口。 这样的服务器的主要目的是允许客户端在本机MySQL不可用时使用HTTP与MySQL数据库对话。 运行/安装 为此很容易运行HTTP服务器。 只需克隆存储库,安装依赖项,...
[Ruby_on_Rails][資料庫]_03._[Windows]_MySQL安裝
mysql的ruby数据库连接驱动。
本章节将向您讲解如何使用 Ruby 访问数据库。Ruby DBI 模块为 Ruby 脚本提供了类似于 Perl DBI 模块的独立于数据库的接口。 DBI 即 Database independent interface,代表了 Ruby 独立于数据库的接口。DBI 在 Ruby ...
windows 关于qt的数据库操作封装类 以及用例: SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的功能特点有: 1. ACID事务 2. 零配置 – 无需安装和管理配置 3....
MySQL (数据库服务器)是一款小型关联式数据库管理系统,MySQL ...提供用于管理、检查、优化数据库操作的管理工具。 10.支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 11.支持多种存储引擎。
1. [2] MySQL使用 C和 C++编写,并使用了多种...9.提供用于管理、检查、优化数据库操作的管理工具。 10.支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 11.支持多种存储引擎。 12.MySQL 是开源的
TODO: 检查mysql数据库中重复和冗余的索引 Doc 冗余和重复索引的概念: MySQL允许在相同列上创建多个索引,无论是有意的还是无意的。MySQL需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑...
工具简介: MySQL (数据库服务器)是一款小型关联式数据库管理系统,...9.提供用于管理、检查、优化数据库操作的管理工具。 10.支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 11.支持多种存储引擎。
[Ruby_on_Rails][資料庫]_02._[Mac]_MySQL安裝
Database Cleaner是一组宝石,其中包含用于在Ruby中清洁数据库的策略。 最初的用例是确保测试期间的清洁状态。 每种策略都是少量的代码,但是在使用数据库进行测试的任何ruby应用程序中通常都需要这些代码。 宝石...