Sep 14

[原]基于Linux使用ASP连接MSSQL 晴

linuxing , 16:50 , 编程 » ASP , 评论(2) , 引用(0) , 阅读(15372) , Via 本站原创 | |
  上一篇日志讲述了如何在红旗Linux环境中运行ASP程序,也提供了一个简单的事例。接下来要做的,就是在该环境中,尝试用ASP连接到数据库中。因为不能连接数据库的ASP程序几乎是没有意义的。
  已经知道,ASP是运行在iASP中间环境之上的。而iASP使用的是Java平台,所以,连接数据库的时候需要借用jdbc接口,而不是Windows地下的odbc接口。下面以连接MS SQL 2000服务器为例说明。当然,也可以连接到Mysql上的。
一、系统平台
ASP通常与两种微软的数据库连接,分别是Access和MS SQL。微软并没有提供对Access的jdbc接口,而Access的数据可以导入MS SQL中。所以,我们选择以MS SQL为例。
这里的MS SQL是单独运行在一台Windows 2000 Server系统上的,并不能基于红旗Linux。
系统平台:
引用
应用服务器:红旗DC Server 5.0+Apache 2.0+jdk 1.4.2+iASP 2.1.2+ASP
数据服务器:Windows 2000 Server+SQL Server 2000  标准版

二、安装jdbc接口
在微软的网站上可以转到连接到SQL Server 2000和2005的jdbc接口包:
SQL Server 2000 Driver for JDBC SP3
SQL Server 2005 JDBC Driver 1.1
本地下载:

1、安装jdbc驱动
引用
# mkdir mssqlserver
# tar xvf mssqlserver.tar -C mssqlserver
# cd mssqlserver
# ./install.ksh
Please enter the installation directory: (/opt/msSQLjdbc)
Installing SQLServer 2000 Driver for JDBC....
Installation is Complete.
SQL Server 2000 driver for JDBC is installed in the following location: /opt/msSQLjdbc

安装程序比较简单,其实就是把msjdbc.tar解压到某个目录中。
2、配置iASP与SQL 2000的jdbc连接
要让ASP能够连接到MS SQL,必须先让iASP加载MSSQL jdbc的库文件。
修改/usr/iasp/iasp21/start-server.sh文件为:
引用
/usr/java/j2re1.4.2/bin/java -mx32768000 -classpath /usr/java/j2re1.4.2/bin/../lib/classes.zip:/usr/java/j2re1.4.2/bin/../lib/tools.jar:/usr/iasp/iasp21/lib/jsdk.jar:/usr/iasp/iasp21/lib/iasplib.jar:/usr/iasp/iasp21/lib/activation.jar:/usr/iasp/iasp21/lib/asp2j.jar:/usr/iasp/iasp21/lib/rjax.jar:/usr/iasp/iasp21/lib/ejbcorba.jar:/usr/iasp/iasp21/lib/jndi.jar:/usr/iasp/iasp21/lib/samples.jar:/usr/iasp/iasp21/lib/hado.jar:/usr/iasp/iasp21/lib/pop3.jar:/usr/iasp/iasp21/lib/mail.jar:/usr/iasp/iasp21/lib/iasp_fileup.jar:/usr/iasp/iasp21/lib/iasp_mail.jar:/usr/iasp/iasp21/lib/iasp_grid.jar:/usr/iasp/iasp21/lib/iasp_nntp.jar:/usr/iasp/iasp21/lib/iasp_exec.jar:/usr/iasp/iasp21/lib/iasp_inet.jar:/usr/iasp/iasp21/lib/iasp_upload.jar:/usr/iasp/iasp21/lib/iasp_http.jar:/usr/iasp/iasp21/lib/iasp_pop3.jar:/usr/iasp/iasp21/lib/iasp_chart.jar:/usr/iasp/iasp21/lib/iasp_image.jar:/usr/iasp/iasp21/lib/iasp_sock.jar:/usr/iasp/iasp21/lib/iasp_xmldom.jar:/usr/iasp/iasp21/servlets:/usr/iasp/iasp21/lib/rjaxADODB.jar:/opt/msSQLjdbc/lib/msbase.jar:/opt/msSQLjdbc/lib/mssqlserver.jar:/opt/msSQLjdbc/lib/msutil.jar servlet.http.HttpServer

※红色标识的就是增加的库文件
保存后,重启iASP代理模块:
引用
# /usr/iasp/iasp21/stop-server.sh
# /usr/iasp/iasp21/start-server.sh &

三、测试
我模拟了一个最简单的数据库环境:
◎MS SQL 2000中有一个testdb数据库,包括一个叫Customers的表,内容如下:
点击在新窗口中浏览此图片
而sqltest.asp就是把其中的内容提取出来。
1、sqltest.asp文件内容
引用
<%
dim Sql_Server,Sql_User,Sql_Pass,Sql_Data
Sql_Server="192.168.228.223"
Sql_User="linuxing"
Sql_Pass="redflag"
Sql_Data="testdb"

dim my_Conn,connstr
'下面是IIS下ASP连接MS SQL的语句
'connstr="PROVIDER=SQLOLEDB;DATA SOURCE="&Sql_Server&";UID="&Sql_User&";PWD="&Sql_Pass&";DATABASE="&Sql_Data
'下面则是iASP下,使用jdbc接口打开MS SQL的语句
'其中包括了定义MS SQL的数据库IP、连接数据库、用户名、密码等
connstr="DRIVER=com.microsoft.jdbc.sqlserver.SQLServerDriver;URL={jdbc:microsoft:sqlserver://192.168.228.223:1433};DatabaseName=testdb;User=linuxing;Password=redflag"
set my_Conn=server.CreateObject("ADODB.connection")
my_Conn.open(connstr)

sub CloseConn()
my_Conn.close
set my_Conn=nothing
end sub
%>

<table>
<tr>
<td>公司ID</td>
<td>公司名</td>
<td>联系方式</td>  
</tr>
<%
Dim rs
Set rs=my_Conn.Execute("Select CustomerID,CompanyName,ContactName From Customers")
Do While Not Rs.Eof

%>
<tr>
<td><%=rs("CustomerID")%></td>
<td><%=rs("CompanyName")%></td>
<td><%=rs("ContactName")%></td>  
</tr>
<%
rs.Movenext
Loop
Set rs=Nothing
%>

下载:

2、测试结果一
点击在新窗口中浏览此图片
出现乱码。
在浏览器中,右键选择编码为“简体中文”即可看到正确的字符。
所以,可以知道,问题出在Apache中。
3、修改Apache配置
修改/etc/httpd/conf/httpd.conf为:
引用
#AddDefaultCharset UTF-8
AddDefaultCharset GB18030

保存后,重新启动Apache服务:
# service httpd restart

※注意,iASP只是Apache外的一个代理模块。也就是说,当处理.asp文件的时候,才会发给iASP处理。所以,这里是不需要重新启动iASP的。这也是为什么,Apache可以同时支持php等其他模块的原因。
4、测试结果二
点击在新窗口中浏览此图片
包括中文字符等,一切正常。
※请特别留意连接数据库的字符串编写形式。另外,由于Linux环境对大小写敏感,所以在ASP中引用其他文件的时候,请小心。(IIS对不对大小写识别)

四、参考文档
可以看到,使用iASP还是可以实现相当不错的动态效果的。最可惜的就是,iASP的开发公司似乎已经停止运作了。它们后续还提供了iASP.net 2.0 beta的服务计划,但这些都很难找到相关的文档。
在当前的环境中,能够看到的主要还是软件中自带的帮助信息:
1、iASP样本文件
引用
/usr/iasp/iasp21/docs

其中包括了一些常见的ASP代码和测试页面,非常有用。
2、MS SQL jdbc驱动帮助
引用
/opt/msSQLjdbc/books

包括了安装帮助,jdbc接口方式的说明等。
3、iASP 管理界面
iASP自带管理界面,启动:
引用
# /usr/iasp/iasp21/start-admin.sh &
# netstat -ln|grep 9095
tcp        0      0 :::9095                     :::*                        LISTEN

访问(默认用户名和密码都是admin):
点击在新窗口中浏览此图片
前面手动配置的classpath,也可以在这里配置:
点击在新窗口中浏览此图片
4、连接Mysql
理论上来说,使用jdbc接口,同样可以让ASP连接到SQL 2005或Mysql等数据库中。
下面就是连接到Mysql的方式。
首先当然是安装jdbc驱动,然后是配置jdbc接口,类似让/usr/iasp/iasp21/start-server.sh中包含有:
引用
-classpath /mysql/jdbc/mysql-connector-java-5.0.7-bin.jar:

连接数据库的字符串是:
引用
ConnectionString="DRIVER=com.mysql.jdbc.Driver;
URL={jdbc:mysql://192.168.200.1:3306/Test};uid=root;pwd=1234;"
set con = Server.CreateObject("ADODB.Connection"
con.open(ConnectionString)
Tags: , , ,
能帮我解决个问题吗
2009/03/25 17:15
我的iasp安装成功后,英文的asp页面没有问题,能够运行,但是中文的asp却出现乱码,这个乱码不是服务器的问题,好像是iasp转码时的问题,不知道你有没有遇到,能不能给我解决一下。谢谢
linuxing 回复于 2009/03/25 22:00
这个乱码问题相当复杂,当时我也紧是解决了一部分而已,实际上与jdbc和数据库之间的通信是相关的。我现在已经没有这个环境了,帮不了你,或者你可以试试从三个方面看看:1、页面字符集正确吗?2、jdbc连接数据库用什么编码?3、创建的数据库是否支持中文,例如mysql默认就是latin的,需要手动指定。三方面缺一不可。
而且iasp早就停止研发了,也没有源码,若在它内部java部分就是不支持中文,那就没办法了。
eave_zhu Email
2008/12/06 11:54
我按照您的方法试了 但ASP程序一直报如下错误
Vbscript Runtime error 'ASP 0185 : 3219'
No suitable driver
linuxing 回复于 2008/12/17 11:23
信息太少了,如果你的程序比较大,建议写个小运行看看结果。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]