论坛首页 入门技术论坛

ruby点滴(一)

浏览 1933 次
该帖已经被评为新手帖
作者 正文
   发表时间:2009-12-10   最后修改:2010-07-15

一、GBK和UTF-8的转换

用GBK而不要用GB2312,因为GBK不仅包含简体中文,还包括繁体中文等,是一个大字符集。

 

# utf8 to gbk
def u2g(ucode)
  begin
    "#{Iconv.conv('gbk','utf-8',ucode)}"
  rescue
     " #{ucode} " #如果转换不成功,则不转换,并在字符串两边加入空格,避免构造出错误的sql字符串。
  end
end

 

在网络上抓取的信息,可使用这个方法转换。

 

二、RUBY DBI 

ruby和sqlserver交互的时候,使用dbi是一个不错的选择。

 

dbi有两个比较重要的方法,一个是execute方法,会返回一个结果集,一个是do方法,do方法不会返回结果集,也不会返回受影响的行数,do方法是提交一个事务,而commit方法可以将之前所有使用do方法提交的事务执行,commit会返回受影响的行数。

 

需要注意的是,如果使用do方法插入一条数据,而没有commit直接disconnect了,将会导致这条数据插入数据库又被删除,因为你这个时候再插入一条新的数据发现,自增长的主键,被空出一个位置来,比如从3一下跳到了5,所以不要忘记commit。

 

三、Net::HTTP

Net::HTTP::new方法可以支持4个参数的重载。


例如:

req = Net::HTTP.new 'sample.com', 80, 'proxy.com', 8080

 

第三个和第四个参数是指定代理服务器
第二个参数指定端口,不写的话默认为80

 

四、执行sql语句的时候 务必替换特殊字符

name = "lee's book"
sql = "select * from books where name = #{name.gsub("'", "''")}"

 

五、节约临时对象的编写

groups = posts.group_by {|post| post.author_id}

 

替换成:

groups = posts.group_by {&:author_id}

 

   发表时间:2009-12-10  
引用

二、RUBY DBI
ruby和sqlserver交互的时候,使用dbi是一个不错的选择。

dbi有两个比较重要的方法,一个是execute方法,会返回一个结果集,一个是do方法,do方法不会返回结果集,也不会返回受影响的行数,do方法是提交一个事务,而commit方法可以将之前所有使用do方法提交的事务执行,commit会返回受影响的行数。

需要注意的是,如果使用do方法插入一条数据,而没有commit直接disconnect了,将会导致这条数据插入数据库又被删除,因为你这个时候再插入一条新的数据发现,自增长的主键,被空出一个位置来,比如从3一下跳到了5,所以不要忘记commit。

1. do之后事务有没有提交取决于你是不是用的auto commit 模式
2. commit == 提交。  do之后sql就被执行了。
引用

四、执行sql语句的时候 务必替换特殊字符

用placeholder省心省力
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics