用户形象图片

版本信息:

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------------------------------------"

 

回到帖子顶部