`
DAOException
  • 浏览: 122212 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Ruby操作MYSQL数据库

    博客分类:
  • ruby
阅读更多

       今天闲来无事,就想起来继续学习学习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值就可以用“表名.列名”的形式出现。

      怎么样,很简单吧。试一试吧。今天也只看了一点点。等研究多了,再发布点新东西

分享到:
评论
5 楼 lliiqiang 2014-09-03  
面向对象变量相对于现实中物质名称标识,类是集合概念.
4 楼 dimaomao 2010-03-24  
哦,对了
request "DBcon"
改成
request "mysql"
3 楼 dimaomao 2010-03-24  
Mysql2.8.1的驱动配置的方式稍微有些变动,最后那一步应该改成把比如E:\ruby\lib\ruby\gems\1.8\gems\mysql-2.8.1-x86-mingw32\lib\1.8
下的mysql.so(或者mysql_api.so)放到比如E:\ruby\lib\ruby\site_ruby\1.8\i386-msvcrt下。

还有仁兄给出的测试代码,也好像应该改一下,如下:
  res=dbh.query("SELECT id, name FROM test_foolfish")
  puts "===============\n"
  res.each_hash(with_table = true) do |row|
    printf "%d,%s\n",row["test_foolfish.id"].to_i(),row["test_foolfish.name"].to_s()
  end

我是初学者,纯粹为了以后学习的朋友学习之用。
2 楼 dimaomao 2010-03-24  
(⊙o⊙)…不知道Mysql2.8.1的驱动下,上面的例子是否还能够顺利的执行?我试了一下,没有成功,抛出了如下异常:
:in `gem_original_require': no such file to load -- DBcon (LoadError)
1 楼 dimaomao 2010-03-24  
刚好用到这些内容,真的很感谢!辛苦了。

相关推荐

    Ruby-mysql2一个现代的简单和非常快速的RubyMysql库

    Ruby-mysql2是一个被广泛使用的Ruby库,它提供了一个高效且简洁的方式来与MySQL数据库进行交互。这个库的设计目标是提供比其他同类库更高的性能和更简单的API,使其成为Ruby开发者在处理MySQL数据库时的首选工具。 ...

    Ruby on Rails安装及MySQL数据库配置指南

    Ruby on Rails 安装及 MySQL 数据库配置指南 本文详细介绍了 Ruby on Rails 的安装步骤,以及 MySQL 数据库的配置方法,并提供了一些官方阅读资源。 一、Ruby on Rails 安装 Ruby on Rails 的安装可以分为以下几...

    Ruby 连接数据库资源汇总

    这个资源汇总涵盖了Ruby连接各种数据库的方法,无论是使用特定的数据库驱动还是通用的DBI库,都能帮助开发者轻松地处理数据库操作。对于初学者来说,理解这些概念和示例代码是学习Ruby数据库编程的关键步骤。在实际...

    MySQL数据库详细介绍pdf(22)

    MySQL数据库是一种广泛使用的开源关系型数据库管理系统,以其高效、可靠和易于使用的特点,在Web开发和其他领域中占有重要地位。在给定的描述中,我们主要关注的是与MySQL相关的第三方工具,这些工具能够增强MySQL的...

    Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf

    ### Ubuntu 11.04下Ruby on Rails与MySQL数据库集成指南 #### 一、安装与配置MySQL数据库 在Ubuntu 11.04环境中,安装MySQL数据库是部署Ruby on Rails应用的重要步骤之一。首先,通过打开终端并执行以下命令进行...

    Ruby 版数据库连接池

    Ruby 版数据库连接池, 可以参考。 数据库是postgresql

    ruby-mysql-0.2.6.tar.gz

    Ruby MySQL驱动程序是用于在Ruby编程语言中与MySQL数据库进行交互的重要工具。它允许开发者编写Ruby代码来执行SQL查询、管理数据库对象以及处理数据库连接。`ruby-mysql-0.2.6.tar.gz`是一个压缩包,包含了版本为...

    ruby和drizzle数据库的连接

    在Ruby中,你可以使用`DBI`(Database Independent Interface)库来处理数据库操作,它提供了一个统一的接口来与多种数据库交互,包括Drizzle。以下是一个基本的示例,展示如何使用`DBI`和`drizzle-ruby`驱动建立...

    Ruby on rails 数据库详细配置

    在Ruby on Rails框架中,数据库配置是至关重要的部分,它允许开发者与各种数据库系统进行交互,如MySQL、Microsoft SQL Server等。以下将详细介绍如何在Windows环境下安装Ruby on Rails以及配置数据库。 首先,我们...

    Ruby-Shift一个帮助您在MySQL数据库中运行模式迁移

    它可以帮助开发者在MySQL数据库上执行常见的数据库操作,如创建、更新和删除表,以及处理索引和外键等复杂结构。 在实际应用中,Ruby-Shift可能包含以下特性: 1. **命令行接口(CLI)**:提供一系列命令,使...

    PHP、Python、Ruby的(数据库、文件)比较(原创)

    它有一个强大的ORM框架ActiveRecord,这是Ruby on Rails框架的一部分,使得数据库操作非常直观。Ruby同样支持多种数据库,如MySQL、PostgreSQL等。在文件操作上,Ruby的File、Dir类提供了类似PHP的功能,但语法更为...

    连接MYSQL数据库归纳.pdf

    NetBeans对于数据库操作同样提供了良好的支持,可以方便地连接到MySQL数据库,并执行SQL语句进行数据管理。 在文档中,我们可以看到有提及NetBeans IDE 6.7和NetBeans IDE 6.8版本,这表明在不同版本的NetBeans IDE...

    MySQL数据库详细介绍

    ### MySQL数据库系统详解 #### 一、MySQL简介 MySQL是一个非常流行的关系型数据库管理系统(RDBMS),由瑞典公司MySQL AB开发。它以其轻量级、高性能和低成本的特点,在互联网领域尤其是在中小型企业网站中得到了...

    Ruby-DataObjects企图重写现有的Ruby数据库驱动程序符合一个标准接口

    通过使用DataObjects,开发者可以专注于业务逻辑,而不必过于关心数据库操作的细节。这对于大型项目和需要跨数据库系统迁移的场景尤其有价值。此外,由于DataObjects遵循统一的接口,第三方库和框架也可以更容易地...

    rails和mysql数据库连接中出现的问题以及解决办法

    在开发Web应用时,Rails框架和MySQL数据库的集成是一个常见的选择。然而,有时在尝试连接Rails应用到MySQL数据库时,可能会遇到一些问题。本篇文章将深入探讨这些常见问题及其解决方案。 首先,Rails与MySQL的连接...

    ruby--dbi数据库操作gems相关

    DBI,全称“Database Independent Interface”,是Ruby中一个用于数据库操作的重要库。它提供了一个统一的接口,允许开发者通过简单的API与多种数据库系统进行交互,如MySQL、PostgreSQL、SQLite等,无需关心底层...

    Ruby-RailsDBRails数据库查看器和SQL查询运行器

    总的来说,Rails DB是Ruby on Rails开发流程中的一个重要辅助工具,它提供了数据库操作的便利性和效率,对于开发者而言,无论是在日常开发还是在调试阶段,都是一个不可多得的利器。通过其强大的功能和简洁的界面,...

    simple-s3-backup:一个简单的 Ruby 备份解决方案,用于将 MySQL 和 MongoDB 数据库、文件目录和单个文件备份到 Amazon S3

    简单的 S3 备份一个简单的 Ruby 脚本,用于将 MySQL 数据库表、MongoDB 数据库、完整目录和单个文件组备份到 Amazon S3(简单存储服务)。 使用步骤: 设置 Amazon S3 账户: : 安装 aws/s3 Ruby gem: : 将 ...

Global site tag (gtag.js) - Google Analytics