夜的第七章

ASP.NET、C#、.NET开发资源、Javascript等等为主的开发备注收藏注意警告等的一个个人博客。

« 入门Ruby(1):ruby on rails在windows下的环境搭建Ruby on Rails HTML表单语句大全 »

入门Ruby(2):操作数据库

接上。上篇ruby基本的环境算是搭建成功。但还是半成。因为如果你加入任何controller的话,会报错的。rails默认数据库是sqlite3,你需要安装sqlite3的ruby驱动。

http://hlee.javaeye.com/blog/342575摘抄一段:

首先下载rar包,包里一共有6个文件,将它们全部解压缩到你ruby的bin目录中,假设你的ruby安装在了c盘

那么这个目录就应该是 c:\ruby\bin

接下来 开始->运行->CMD

在命令提示符里面敲 gem install -l c:\ruby\bin\sqlite3-ruby-1.2.3-mswin32.gem 回车

看到下面的提示

C:\>gem install -l c:\ruby\bin\sqlite3-ruby-1.2.3-mswin32.gem
Successfully installed sqlite3-ruby-1.2.3-x86-mswin32
1 gem installed
Installing ri documentation for sqlite3-ruby-1.2.3-x86-mswin32…
Installing RDoc documentation for sqlite3-ruby-1.2.3-x86-mswin32…

说明你安装成功了

现在创建一个站点目录吧:控制台下输入:rails -d postgresql E:\Mytest,然后会在E:\Mytest搭个rails框架。

然后输入:ruby script/server

启动服务器。浏览器里输入:http://localhost:3000,可以打开了。

这时把站点目录/Public/index.html删除掉。

sqlite对于大多数人来说还是不太熟悉的。

顺便说下mysql的支持:

首先安装好MySql。
下载ruby连接MySql 的so文件 在http://www.vandomburg.net/pages/mysql-ruby-windows-2.7.1.zip
把mysql.so 放到ruby 的lib\ruby\site_ruby\1.8\i386-msvcrt下.
下载一个msvcr70.dll放在C:\windows\system32\下。
一般这样就可以了。
如果出错的话,再把MySQL/bin/libmysql.dll复制到ruby\bin下。

还是来操作postgresql,话说postgresql其实不比mysql差,无论哪方面。

首先安装postgresql,在http://www.postgresql.org/download/windows下载One click installer,最新版本是postgreSQL 8.4。安装后,把postgresql安装目录C:\Program Files\PostgreSQL\8.4\bin下所有.dll复制到C:\Ruby\Bin里面。这样是避免ruby的postgresql和postgresql的版本不一致,访问站点会出现:”无法定位序数 284 于动态链接库 SSLEAY32.dll 上”的错误。

然后打开控制台,转到你的站点目录(就刚才那个E:\Mytest)里,输入“gem install postgres-pr”,这个就是安装postgresql的驱动了。但在站点/config/database.yml里的adapter不要设成postgres-pr,而要设成postgresql。同时把development结点设置如下(注意冒号后面有个空格,同时注意大小写,不然不认):

development:
adapter: mysql
database: cookbook
host: localhost
username: root
password:

保存,退出,现在基础总算搞定了。

在postgreSQL中新建数据库Demo:

CREATE DATABASE “Demo”
  WITH OWNER = postgres
       ENCODING = ‘UTF8′
       LC_COLLATE = ‘Chinese, Hong Kong S.A.R.’
       LC_CTYPE = ‘Chinese, Hong Kong S.A.R.’
       CONNECTION LIMIT = -1;

新建表tbl_UserInfo:

CREATE TABLE “tbl_UserInfo”
(
  “uName” character varying(50) NOT NULL,
  “uPwd” character varying(50) NOT NULL
)
WITH (
  OIDS=FALSE
);
ALTER TABLE “tbl_UserInfo” OWNER TO postgres;

插入一条数据:

INSERT INTO “tbl_UserInfo”(
            “uName”, “uPwd”)
    VALUES (’Dujianyu’, ‘123456′);

注意字段大小写,postgresql是分大小写的。

现在控制台路径依然在E:\Mytest(站点目录)里,输入:

ruby script/generate controller say

调用script目录下的generate来生成一个say的控制器。

打开站点目录\app\controllers\,看到已经生成一个say_controller.rb,打开,

把全部源码改为:

require ‘postgres’

class SayController < ApplicationController
  def hello
    @time = Time.now
   
    conn = PGconn.connect(’localhost’,5432,”,”,’Demo’,'postgres’,'123456′)
    @res = conn.query(’select * from “tbl_UserInfo”‘)
   
    conn.close
  end
 
  def goodbye
   
  end
end

在这个controller里定义了两个变量,下面供view调用。

有了controller,接下来就加view了,在站点目录\app\views\say\新建一个hello.rhtml,对应刚才的action:hello。然后打开加内容如下:

<html>
<head>
</head>
<body>
 Application:<%= @time %>
  <br/>
  <table border=”1″ width=”300px”>
    <tr>
      <td>uName</td>
      <td>uPwd</td>
    </tr>
  <%
    for data in @res
  %>
    <tr>
      <td>
        <%=data['uName']%>
      </td>
      <td>
        <%= data['uPwd']%>
      </td>
    </tr>
  <%
  end
  %>
  </table>
</body>
</html>

 

其实就是html+后台代码,跟asp差不多。

加完以后,浏览器输入:http://localhost:3000/say/hello,如下显示:

Application:Wed Jul 15 14:15:13 +0800 2009

uName uPwd
Dujianyu 123456

说明读取数据库成功!

附postgreSQL数据类型说明:

BIGSERIAL
SERIAL8
存储自动递增的惟一整数,最多 8 字节。

BIT
固定长度的位串。

BIT VARYING(n)
VARBIT(n)
可变长度的位串,长度为 n 位。

BOOLEAN
存储逻辑布尔值(true/false/unknown),可以是 TRUE、t、true、y、yes 和 1,或者 FALSE、f、false、n、no 和 0。

BYTEA
用于存储大型二进制对象(比如图形)的原始二进制数据。使用的存储空间是 4 字节加上二进制串的长度。

CHAR(n)
CHARACTER(n)
包含固定长度的字符串,用空格填充到长度 n。

DATE
用 4 字节的存储空间存储日历日期(年、月、日)。

DATETIME
存储日历日期和天内的时间。

DECIMAL(p,s)
NUMERIC(p,s)
存储精确的数值,精度(p)和刻度(s)为 0 或更高。

FLOAT4
REAL
存储浮点数,精度为 8 或更低和 6 个小数位。

FLOAT8
DOUBLE PRECISION
存储浮点数,精度为 16 或更低和 15 个小数位。

SMALLINT
存储有符号或无符号 2 字节整数。

INTEGER
存储有符号或无符号 4 字节整数。

INT8
BIGINT
存储有符号或无符号 8 字节整数。

SERIAL
SERIAL4
存储自动递增的惟一整数值,最多 4 字节存储空间。

TEXT
存储长度可变的大型字符串数据,最多 1 GB。PostgreSQL 自动压缩 TEXT 字符串。

TIME (WITHOUT TIME ZONE |
WITH TIME ZONE)
存储天内的时间。如果不存储数据库服务器的时区,就使用 8 字节的存储空间;如果存储时区,就使用 12 字节。

TIMESTAMP (WITHOUT TIME ZONE |
WITH TIME ZONE)
存储日期和时间。可以存储或不存储数据库服务器的时区,使用 8 字节存储空间。

VARCHAR(n)
CHARACTER VARYING(n)
CHARACTER VARYING
存储可变长度的字符串,最大长度为 n。不存储末尾的空格。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-Blog 1.8 Arwen Build 81206



©2007 - 2010 www.leadnt.com 保留一些权利吧