版本信息:
ruby 1.8.6
rails 2.3.2
---------------------------------------------------------
数据库信息:
数据名:e_development
表名:tt
字段:
id int not null primary key auto_increment
info varchar(50) null
---------------------------------------------------------
RUBY文件名:note.rb
描述:数据库增删查改操作
===================代码如下
require "rubygems"
require "activerecord"
#格式化输出
require "pp"
class My< ActiveRecord::Base
#数据库连接
establish_connection(
:adapter=>'mysql',
:host=>'localhost',
:database=>'e_development',
:username=>'root',
:password=>'',
:encoding=>'utf8'
)
#设定表
set_table_name "tt"
#设定主键
set_primary_key "id"
end
p "1------------------------------------"
#按照主键查找某条记录
t=My.find(1)
#输出记录的一个字段内容
p t.info_before_type_cast
p "1------------------------------------"
p "2------------------------------------"
#指定条件获取数据记录[单个记录]
t2=My.find(:first,:conditions=> "id=1")
#输出
p t2.info
p "2------------------------------------"
p "3------------------------------------"
#指定条件获取多条记录
t3=My.find(:all,:conditions=>"id>1")
t3.each{|u|print u.id.to_s+" "+u.info+"\n"}
p "3------------------------------------"
p "4------------------------------------"
#接收外部参数
id=2
#t4=My.find(:first,:conditions=>"id=#{id}")
#t4=My.find(:first,:conditions=>["id=?",id]) #可以使用问号占位符
#t4=My.find(:first,:conditions=>["id=:id",{:id=>id}]) #可以使用命名的占位符
t4=My.find(:first,:conditions=>"id="+id.to_s) #可以使用最原始的字符连接法
p t4.info
p "4------------------------------------"
p "5------------------------------------"
#传递SQL语句
t5=My.find_by_sql("select * from tt")
t5.each{|u|print u.id.to_s+" "+u.info+"\n"}
t6=My.find_by_sql("select count(*) as cc from tt")
p t6[0].cc
p "5------------------------------------"
p "6------------------------------------"
#另类查询
t7=My.find_by_id(1)
p t7.info
t8=My.find_by_info('baba')
p t8.id
p "6------------------------------------"
p "7------------------------------------"
#新增记录
#1、new方法
t9=My.new
t9.info='hengh'
t9.save
#或
My.new do |t10|
t10.info='qq'
t10.save
end
#又或
t11=My.new(
:info=>'msn'
#:info1=>'tt',
#:info2=>'ee'
)
t11.save
#2、create方法
t12=My.create(
:info=>'cc'
)
#或
t13=My.create(
[
{:info=>'yy'},
{:info=>'xx'}
]
)
#查询显示新增的记录
t14=My.find_by_sql("select * from tt")
t14.each{|u| print u.id.to_s+" "+u.info+"\n"}
p "7------------------------------------"
p "8------------------------------------"
#修改数据(update)
#基本方法 定位修改
t15=My.find(2)
t15.info='i love mama'
t15.save
#或
t16=My.find_by_sql("select * from tt where id=2")
t16[0].info='i love mama too'
t16[0].save
#update_attribute方法和update_attributes方法
t17=My.find(2)
t17.update_attribute(:info,"i love mama!")
#可以使用update_attributes修改多个字段的值
#t18=My.find(2)
#t18.update_attributes(:info=>'aadsf',:info2=>'asdfkjsaldj')
#update方法.可以更新指定主键值的数据记录
t19=My.update(2,:info=>'mamamama')
#查询显示更新的记录
t20=My.find_by_sql("select * from tt")
t20.each{|u| print u.id.to_s+" "+u.info+"\n"}
p "8------------------------------------"
p "9------------------------------------"
#删除数据(delete)
#可以删除指定的某条记录.如
My.delete(1)
#也可以删除一组记录,如
My.delete([2,3,4])
#delete_all方法删除满足条件的一组记录,如
My.delete_all(["info=?","baba"]) #如果不指定条件,则删除全部记录
#destroy方法
t21=My.find(8)
t21.destroy
#查询显示更新的记录
t22=My.find_by_sql("select * from tt")
t22.each{|u| print u.id.to_s+" "+u.info+"\n"}
p "9------------------------------------"


