回 帖 发 新 帖 刷新版面

主题:[讨论]script runat=server 与<%%>有区别吗?

最近遇到一个比较奇怪的问题.在更新SQL 数据库时,总是不成功,但又没有返回任务错误信息.起初以为是事务处理方面出了问题,于是写了下面这段测试代码.本意是想看看事务处理能不能成功执行.但后来发现,写在<script runat="server">块时,执行失败,无任何结果,也没出错信息.改成<% %>后,就成功了.很是莫名其妙.

<html>
<head>
    <title> 测试sql 事务处理 </title>
</head>
<body>
</body>
</html>

<SCRIPT language="vbscript" runat="server">
'* 难道script标记与<%标记的功能是不一样的????
'* 当写成script时,执行失败,无任何结果,也没出错信息
'* 当写成<% 时,能成功执行
Option Explicit 
Dim conn 
Dim cnnStr 
Dim sqlStr
Response.write "开始执行<br>"
Set conn=Server.CreateObject("ADODB.Connection")
cnnStr="Driver={SQL Server};UID=sa;PWD=;database=Guan;server=127.0.0.1;"
conn.open cnnStr
Response.write "以非事务处理方式操纵sql数据库<br>"

'* 先清除test表中的相关记录
sqlstr="delete from test where id=321 or id =123"
conn.execute(sqlstr)

sqlstr="insert into test(ID,DD) values(321,'non_trans')"
conn.execute(sqlstr)
Response.write "非事务处理方式结束<br>"
'* ===========================
sqlStr="insert into test(ID ,DD) values('123','trans')"
Response.write "事务处理开始<br>"
conn.beginTrans
conn.execute(sqlstr)
If conn.errors.count >0 Then 
    Response.write "事务处理失败<br>"
    conn.RollbackTrans
Else
    Response.write "事务处理成功<br>"
    conn.CommitTrans
End If 
conn.close
Set conn=Nothing
</SCRIPT>

回复列表 (共1个回复)

沙发

PS:
又一个例子:
<html>
<head>
<title>script runat=server与<%的区别</title>
</head>
<body>
</body>
</html>
<% [color=red]
    '* 把script里的所有错误修正后,才会出现下面的由于"option explict"引起的错误,
    '* 这是否表明,script runat=server的执行顺序先于<% %> ???[/color]
    Option explicit
    '* response.write " <script> </script> " 
    Response.write "<b>hello wold </br>"
%> 

<script  language="vbscript"  runat= "server"> 
[color=green]
'* 不能直接输出"<script></script>",而只能把它们拆开来输出,否则会出现错误script里不能嵌套script
'* 甚至是被注释掉了之后都还是出现同样的错误.[/color]
'* response.write "<script></script>"
'* response.write  "<" & "script> </" & "script>"
Response.write "<b>hello wold </br>"
</script> 

我来回复

您尚未登录,请登录后再回复。点此登录或注册