`
jack
  • 浏览: 392784 次
  • 来自: 温州
社区版块
存档分类
最新评论

如何在rails中正确使用MS Sql Server 2000做为数据库服务器

阅读更多
在windows平台上面使用数据库,除了mysql之外,还有sql server 2000可以作为选择,但是sql server 2000的unicode编码有特殊性,仅仅在rails中使用utf8编码,和把全部rails项目文件格式改成utf8之外,还是不够的。仅仅这样做,只是部分中文字符能够正确处理,而且存入sql server2000中的中文数据,也完全是乱码。正确的配置方法应该如下。

1. ms sql server2000中数据字段全部要选择成n打头的类型,比如ntext,nvarchar等。

2.安装ADO Driver
安装one -click installer 来安装ruby 的话就已经安装了所有连接SQL Server使用的需求包.但是,并没有安装ADO Driver.
这样来安装它:

在Ruby目录下找到这个目录: \ruby\lib\ruby\site_ruby\1.8\DBD .例如:我的Ruby安装在D:\ruby中,所以是这个目录D:\ruby\lib\ruby\site_ruby\1.8\DBD 在该目录中创建一个ADO文件夹. 下载Ruby-DBI,将lib/dbd_ado/ADO.rb文件拷贝到X:/ruby/lib/ruby/site_ruby/1.8/DBD/ADO/ADO.rb

3. 配置database.yml:

development: 
adapter: sqlserver 
database: database_name 
host: server_name 
username: user_name 
password: your_pw_here


4.在environment.rb添加下面代码
require 'win32ole'
WIN32OLE.codepage = WIN32OLE::CP_UTF8


在这里稍微解释下第四部分的设置。sql server 2000中使用的unicode 并非是utf8,ado的默认链接编码都是当前系统设置的code pages相关的。


一般的windows设置都是非unicode的,比如简体中文windows系统下一般都是gb2312, 在rails中database.yml设置encoding: utf8,对于sql server没有任何用处。

为了迫使sql server接受utf8数据,必须修改ado链接的code pages值为utf8,才能让ado部分代码在接受rails传入的utf8数据之后,不做任何额外的处理. 否则的话,ado部分代码会根据当前系统的默认code pages值来处理这里字符数据。

于是在中文windows系统上,从utf8的rails项目中传入的数据,会被当作gb2312编码的数据来传递到sql server2000中,于是sql server2000中存入的数据会成为乱码,也有部分数据在处理过程中出错,导致sql 语句执行出错。比如常见的中文字符右边的单引号会不见的情况。


不设置 WIN32OLE.codepage = WIN32OLE::CP_UTF8,你的整个系统编码配置是这样的
rails(utf8)<-->ado(根据当前系统cp来取得编码,或是gb2312或是其他)<-->sql server 2000 (unicode)
整个系统编码不一至


WIN32OLE.codepage = WIN32OLE::CP_UTF8 这句代码就是为了更改cp值.整个系统编码配置是这样的
rails(utf8)<-->ado(utf8)<-->sql server 2000 (unicode)
整个系统编码一至,整个系统中不会再出现任何乱码.
分享到:
评论
5 楼 sheepchang 2007-09-15  
可是可以的,但是第一条不是必须的。。。
另外数据库连接中的host应该是这样的
development:   
  adapter: sqlserver
  database: pubs
  host: DBI:ADO:Provider=SQLOLEDB;Data Source="127.0.0.1";Initial Catalog="pubs";User Id="sa";password="123456";
  username: sa
  password: 123456
4 楼 eltonto 2007-04-03  
好帖子帮顶
3 楼 fangzhouxing 2007-03-06  
非常感谢,这个方法管用。我已经在sqlserver 2000和2005下测试通过。
2 楼 bluebachelor 2007-02-15  



1 楼 bluebachelor 2007-02-15  
              

相关推荐

    rails配置sqlserver2000

    在Ruby on Rails框架中,与SQLServer 2000集成可能会比与其他常见的数据库系统(如MySQL或PostgreSQL)稍复杂一些,因为SQLServer 2000的兼容性问题和缺少官方支持。然而,通过一些第三方库和适当的配置,我们仍然...

    Ruby-SQLServerRailsActiveRecord的SQLServer适配器

    本主题将深入探讨如何在Rails应用中使用SQL Server作为数据存储,特别关注`activerecord-sqlserver-adapter`这个gem,它使得Ruby的ActiveRecord能够与Microsoft SQL Server无缝集成。 `activerecord-sqlserver-...

    Ruby on rails 数据库详细配置

    在Ruby on Rails框架中,数据库配置是至关重要的部分,它允许开发者与各种数据库系统进行交互,如MySQL、Microsoft SQL Server等。以下将详细介绍如何在Windows环境下安装Ruby on Rails以及配置数据库。 首先,我们...

    rails和mysql数据库连接中出现的问题以及解决办法

    在开发Web应用时,Rails框架和MySQL数据库的集成是一个常见的选择。然而,有时在尝试连接Rails应用到MySQL数据库时,可能会遇到一些问题。本篇文章将深入探讨这些常见问题及其解决方案。 首先,Rails与MySQL的连接...

    网上书城struts+jsp+SqlServer源代码

    购物车状态保存在服务器端,可能使用session或cookie实现,Struts处理购物车操作,SQL Server记录用户订单。 4. 订单处理:结账、支付、订单状态跟踪。涉及到支付网关集成,可能使用第三方API,订单信息存储在SQL ...

    Ruby中访问SQL Server数据库的配置实例

    在Ruby编程环境中,如果你需要与Microsoft SQL Server数据库进行交互,可以使用特定的工具和库来实现这一目标。本文将详细讲解如何配置Ruby环境以便访问SQL Server数据库,主要涉及两个关键组件:FreeTDS和Tiny_TDS...

    Rails的中文乱码问题

    标题中的“Rails的中文乱码问题”涉及到的是在使用Ruby on Rails框架开发Web应用时,遇到的中文字符编码不正确的问题。Rails是一个基于Ruby语言的开源Web开发框架,它遵循MVC(Model-View-Controller)架构模式。在...

    Ruby-RailsDBRails数据库查看器和SQL查询运行器

    Rails DB 是一个专门为Ruby on Rails框架设计的数据库查看器和SQL查询运行器。它提供了一个直观的用户界面,使得开发者可以方便地查看、管理和操作Rails应用中的数据库。这个工具极大地提升了开发效率,尤其是在处理...

    rails web server deploy guide

    标题 "rails web server deploy guide" 暗示了本文将关注如何部署Rails应用程序到Web服务器。Rails是Ruby on Rails的简称,是一个流行的开源Web开发框架,用于构建动态、数据驱动的网站。部署Rails应用通常涉及将...

    使用Rails 数据库DSL与PHP协作开发 - 色色

    标题 "使用Rails 数据库DSL与PHP协作开发 - 色色" 暗示了这篇博文将探讨如何在Rails框架中使用数据库领域特定语言(DSL)来与PHP进行协同开发。Rails是Ruby on Rails的简称,它是一个基于Ruby语言的开源Web应用框架...

    Ruby on Rails安装及MySQL数据库配置指南

    可以在数据库配置文件中添加 MySQL 的连接信息。 三、解决问题 在安装和配置 Ruby on Rails 和 MySQL 数据库的过程中,可能会遇到一些问题。例如,在创建 POSTS 应用时可能会遇到问题,创建数据后数据库中有数据,...

    Ruby-SecondBase为Rails提供双数据库无缝相集成

    在数据库迁移方面,SecondBase扩展了ActiveRecord的迁移命令,使得你可以针对每个数据库运行单独的迁移。这意味着你可以对每个数据库进行定制化的结构更新,而不会影响到其他数据库。在Rails的命令行中,你可以指定...

    Rails中上传文件保存中文文件名乱码

    另外,还可以在数据库中存储转换后的文件名,以确保在检索文件时不会出现乱码。这样,当需要访问文件时,可以从数据库中获取正确的文件名进行解码和查找。 总结来说,处理Rails中上传文件保存中文文件名乱码的问题...

    rails_db:Rails数据库查看器和SQL查询运行器

    检查Rails数据库快速方法,查看表的内容,将它们导出为CSV,EXPLAIN SQL并运行SQL查询。 演示可在以下获得: : 视频演示: ://youtu.be/TYsRxXRFp1g,https: 要求 版本&gt;2.0 100%适用于Ruby 2.3 +,Rails 5和...

    rails3.1.0解决数据库取出来的信息编码为utf-8

    标题 "rails3.1.0解决数据库取出来的信息编码为utf-8" 指向的是在使用Rails 3.1.0版本时遇到的一个常见问题,即从数据库检索的数据编码不是预期的UTF-8格式,导致显示异常或乱码。在Rails应用中,数据的正确编码对于...

    linux-在Ubuntu服务器上安装Rails生产环境的脚本

    在Ubuntu服务器上搭建Rails生产环境是一项关键的任务,它涉及到多个步骤和组件的配置。Rails是Ruby的一个框架,用于构建Web应用程序。在这个过程中,我们将主要关注以下几个核心知识点: 1. **Ruby 安装**:首先,...

    activerecord-sqlserver-adapter-mirroring:Rails 的数据库镜像支持 activerecord-sqlserver-adapter

    目标 Rails 4.1.x 和 activerecord-sqlserver-adapter 4.1.0。 用法 添加到 Gemfile: gem 'tiny_tds' gem 'activerecord-sqlserver-adapter-mirroring' 将镜像部分添加到 database.yml: development: ...

Global site tag (gtag.js) - Google Analytics