bestlong 怕失憶論壇's Archiver

bestlong 發表於 2011-3-18 11:55

ASP 程式 VBScript 改用 JScript 語法資料庫就不能連線了?

運作環境 Win 2003 + SQL2005 Std.
開發環境 XPP IIS5.1 + SQL2005 Express

因為要幫忙改善一個用 JScript 寫的 asp 系統, 建置開發環境卻碰到資料庫連線上的問題
同樣的連線字串用 VBScript 語法寫都可以連 SQL 2005 Express 資料庫
換成了 JScript 語法就都不行, 不知道是有什麼限制嗎?[code]
[START]<br />
<%
connStr = "Provider=SQLOLEDB;Data Source=localhost\SQLEXPRESS;User Id=dbuser;Password=P@ssw0rd;Initial Catalog=MYDB;Connect Timeout=15;"
connStr =  "Provider=SQLNCLI;Data Source=localhost\SQLEXPRESS;User ID=dbuser;Password=P@ssw0rd;Initial Catalog=MYDB;Connect Timeout=15;Persist Security Info=True;"

set conn = Server.CreateObject("ADODB.Connection")
conn.Open connStr

set res = Server.createObject("ADODB.Recordset")
res.Open "select top 20 * from USERS ", conn

Do While not res.EOF
        For i = 0 To res.Fields.Count - 1 Step 1
                Response.write res.Fields(i).Value & " "
        Next
        Response.write "<br />" & vbCrLf
        res.MoveNext
Loop

res.Close
conn.Close
set res = Nothing
set conn = Nothing
%>
[END]
[/code]以上程式碼兩種連接字串都可以正常執行
但若是用 JScript 語法來寫就無法連線到資料庫[code]
<%@language="JScript"%>
[START]<br />
<%
var connStr = "Provider=SQLOLEDB;Data Source=localhost\SQLEXPRESS;User Id=dbuser;Password=P@ssw0rd;Initial Catalog=MYDB;Connect Timeout=15;";
var connStr =  "Provider=SQLNCLI;Data Source=localhost\SQLEXPRESS;User ID=dbuser;Password=P@ssw0rd;Initial Catalog=MYDB;Connect Timeout=15;Persist Security Info=True;";

var conn = Server.CreateObject("ADODB.Connection");
conn.Open(connStr);

var res = Server.createObject("ADODB.Recordset");
res.Open("select top 20 * from USERS ", conn);

while(!res.EOF) {
        for(i = 0; i<res.Fields.Count; i++) {
                Response.write(res.Fields(i).Value + " ");
        }
        Response.write("<br />\n");
        res.MoveNext;
}

res.Close
conn.Close
res = null
conn = null
%>
[END]
[/code]兩種連線字串的錯誤訊息如下:

Microsoft OLE DB Provider for SQL Server (0x80004005)
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒絕存取。
/t2.asp, line 8

Microsoft SQL Native Client (0x80004005)
具名管道提供者: 無法開啟 SQL Server 連線 [53].
/t2.asp, line 8

bestlong 發表於 2011-3-18 13:50

在 blueshop 得到的解答

[color=Red]JScript中,"\"是特殊符號(跳脫字元)[/color]
所以連線 connStr 中要用到該符號的話,需用兩個"\\"[code]var connStr =  "Provider=SQLNCLI;Data Source=localhost\\SQLEXPRESS;User ID=dbuser;Password=P@ssw0rd;Initial Catalog=MYDB;Connect Timeout=15;Persist Security Info=True;";
[/code]
頁: [1]

Powered by Discuz! X1.5 Archiver   © 2001-2010 Comsenz Inc.