前面描述了在红旗Linux上如何搭建运行ASP语言的环境,也对MS SQL和Mysql两数据库的连接方式进行了说明。下面用一个常见的留言版源码,来看看实际环境中,Linux下的ASP代码如何编写,以及要注意那些地方。
一、系统环境
原代码:
Z-BLOG 留言本 v1.0
运行环境:Windows 2000 + IIS 5.0 + Access .mdb数据库
新代码:
Linux:红旗 DC Server 5.0,Mysql 4.1
或
Windows:MSSQL 2000
二、数据库部分
原留言版可从下面下载:
因iASP并不能支持Access数据库的连接。所以,我第一步要做的,就是把Access数据库改为MS SQL或Mysql。以Mysql为例。
1、Mysql数据库
USE gb;
CREATE TABLE `guestbook` (
`ID` int(3) NOT NULL auto_increment,
`addtime` datetime default NULL,
`name` varchar(100) default NULL,
`ip` varchar(100) default NULL,
`mail` varchar(100) default NULL,
`url` varchar(100) default NULL,
`content` text,
`title` varchar(100) default NULL,
`reply` text,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
2、连接数据库部分
把连接数据库部分单独列出来,conn.asp:
<%set conn=server.createobject("adodb.connection")
'连接本机的Mysql数据库
conn.OPEN "DRIVER=com.mysql.jdbc.Driver;URL={jdbc:mysql://127.0.0.1:3306/guestbook};uid=linuxing;pwd=redflag"
'连接本机的MSSQL数据库(Windows平台)
'conn.Open "DRIVER={SQL Server};SERVER=localhost;DATABASE=guestbook;uid=linuxing;pwd=redflag"
'连接另一台Windows平台的MS SQL数据库
'conn.Open "DRIVER=com.microsoft.jdbc.sqlserver.SQLServerDriver;URL={jdbc:microsoft:sqlserver://192.168.228.223:1433};DatabaseName=guestbook;User=linuxing;Password=redflag"
%>
三、代码部分
ASP可以使用两种方式读写数据库:
其可以直接使用标准的SQL语句,例如:select、update、delete、insert等。
2、ADODB.Recordset方式
使用select * from获取数据段,然后运行rs.Addnew、rs.Delete、rs.Update等方式更新。
对比两种方法,Recordset方式最简单,也最常用,代码编写容易。而connection.Execute方法能直接利用SQL语句的强大功能,速度快,迁移方便。
考虑到兼容性的问题(见附录)。我结合了两种方式编写,利用rs对象的select结果进行判断,而使用connection.Execute方法进行更新。
1、index.asp
'set conn=server.createobject("adodb.connection")
'DBPath = Server.MapPath("gb.mdb")
'conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
Set rs = Server.CreateObject("ADODB.Recordset")
'创建Recordset对象,并使用其读取数据库内容,后面使用rs对象引用属性,很方便
dim rs, sql
set rs = server.createobject("adodb.recordset")
dim curpage, strcate
if keyword <> "" then
keyword = replace(keyword,"'","") '过滤关键字
keyword = replace(keyword,"[","")
keyword = trim(keyword)
wherestr=" where name like '%" & trim(keyword) & "%' or content like '%" & trim(keyword) & "%' or title like '%" & trim(keyword) & "%'"
end if
sql = "SELECT * FROM guestbook " & wherestr & " ORDER BY id DESC"
rs.open sql, conn, 1, 1
2、add.asp
'Mysql不支持top 1这样的写法,可以使用下面的排序方式解决
'sql="select top 1 * from guestbook"
sql="select * from guestbook order by id limit 1"
rs.Open sql,conn,3,3
使用Execute方法代替rs.AddNew、rs.Update方法:
3、del.asp
使用rs.Delete方法删除数据,这里和使用conn.Execute方法差别不大。
sql="select * from guestbook where id=" & request("id")
rs.Open sql,conn,3,2
if not rs.EOF then rs.Delete
4、reply.asp
使用Execute方法明显比较简单
conn.Execute "Update guestbook set reply='" & request("reply") & "' where id=" & request ("id")
%><br><%
msg="回复成功。"
修改后的版本:
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
character-set-server=gbk
collation-server=gbk_chinese_ci
并使用connection.Execute方法代替Recordset方式即可。
虽然编写麻烦一点,但效率比Recordset方式要高。
搭建Master-Master Mysql Replication 集群
在红旗Asianux 3.0 上安装Moodle
WAS 5.1使用J2C 认证数据条目
配置WebSphere 5.1的数据库连接池
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/tech/linux/112515.html