bestlong 怕失憶論壇
標題:
ASP 程式 VBScript 改用 JScript 語法資料庫就不能連線了?
[打印本頁]
作者:
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 語法就都不行, 不知道是有什麼限制嗎?
[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]
複製代碼
以上程式碼兩種連接字串都可以正常執行
但若是用 JScript 語法來寫就無法連線到資料庫
<%@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]
複製代碼
兩種連線字串的錯誤訊息如下:
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 得到的解答
JScript中,"\"是特殊符號(跳脫字元)
所以連線 connStr 中要用到該符號的話,需用兩個"\\"
var connStr = "Provider=SQLNCLI;Data Source=localhost\\SQLEXPRESS;User ID=dbuser;Password=P@ssw0rd;Initial Catalog=MYDB;Connect Timeout=15;Persist Security Info=True;";
複製代碼
歡迎光臨 bestlong 怕失憶論壇 (http://www.bestlong.idv.tw/)
Powered by Discuz! X1.5