在本章中,我们将深入探讨如何在 Ruby 程序中与数据库进行交互。数据库是现代应用程序的重要组成部分,能够有效地存储、检索和管理数据。本章将介绍几种流行的数据库系统以及如何使用 Ruby 来操作这些数据库。
使用 SQLite3
SQLite 是一个轻量级的数据库管理系统,非常适合小型应用或测试环境。它无需单独的服务器进程,文件即可独立运行。
安装 SQLite3
首先需要安装 sqlite3 gem。可以通过以下命令安装:
gem install sqlite3
创建数据库连接
在 Ruby 中,可以使用 sqlite3 gem 来创建和操作 SQLite 数据库。下面是一个简单的例子,展示如何连接到数据库并执行基本操作:
// www.javascriptcn.com code example
require 'sqlite3'
# 连接到一个已存在的数据库,如果不存在,则会创建一个新的数据库
db = SQLite3::Database.new "test.db"
# 输出数据库版本信息
puts db.get_first_value "SELECT SQLITE_VERSION()"
# 创建一个表
db.execute <<-SQL
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT,
email TEXT
)
SQL
# 插入一些数据
db.execute "INSERT INTO users (name, email) VALUES (?, ?)", ['Alice', 'alice@example.com']
db.execute "INSERT INTO users (name, email) VALUES (?, ?)", ['Bob', 'bob@example.com']
# 查询数据
results = db.execute "SELECT * FROM users"
results.each { |row| puts row }
# 关闭数据库连接
db.close处理异常
在操作数据库时,应该适当地处理可能出现的异常。例如:
begin
db.execute "INSERT INTO users (name, email) VALUES (?, ?)", ['Charlie', 'charlie@example.com']
rescue SQLite3::Exception => e
puts "An error occurred: #{e}"
end使用 PostgreSQL
PostgreSQL 是一个功能强大的开源关系型数据库系统,适用于复杂的企业级应用。
安装 PostgreSQL
确保已经安装了 PostgreSQL 数据库服务器,并且配置了相应的用户和权限。接下来安装 pg gem:
gem install pg
创建数据库连接
// www.javascriptcn.com code example
require 'pg'
# 连接到 PostgreSQL 数据库
conn = PG.connect(dbname: 'mydatabase', user: 'myuser', password: 'mypassword')
# 执行 SQL 语句
conn.exec("CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT, email TEXT)")
# 插入数据
conn.exec_params("INSERT INTO users (name, email) VALUES ($1, $2)", ['Dave', 'dave@example.com'])
# 查询数据
result = conn.exec("SELECT * FROM users")
result.each { |row| puts row }
# 关闭连接
conn.close使用 ActiveRecord
ActiveRecord 是 Ruby on Rails 框架的一部分,但也可以单独使用来简化数据库操作。为了使用 ActiveRecord,你需要先安装 activerecord 和 pg gem:
gem install activerecord pg
然后可以这样设置:
// www.javascriptcn.com code example
require 'active_record'
require 'pg'
# 连接到数据库
ActiveRecord::Base.establish_connection(
adapter: 'postgresql',
host: 'localhost',
database: 'mydatabase',
username: 'myuser',
password: 'mypassword'
)
# 定义模型
class User < ActiveRecord::Base
end
# 创建表
ActiveRecord::Schema.define do
create_table :users, force: true do |t|
t.string :name
t.string :email
end
end
# 插入数据
User.create(name: 'Eve', email: 'eve@example.com')
# 查询数据
users = User.all
users.each { |user| puts user.name }以上就是本节关于 Ruby 数据库交互的内容。通过这些示例,你可以了解如何使用不同的数据库系统,并开始在自己的项目中集成数据库功能。