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 在 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]