使用ASP連結某IP上的資料庫的connection string



贊助商連結


lalahaha
2005-08-18, 11:18 AM
小弟目前有兩台電腦
電腦A架設IIS IP為192.168.2.113
電腦B則是擺放資料庫的地方 IP為192.168.2.111
現在有各疑問是架設在電腦A的ASP若要抓取電腦B ACCESS資料表的資料的話,Connection String 要怎麼寫呢?

目前有試過一各方法是ODBC連網路磁碟機至電腦B,但是ODBC似乎只能連自己本身的資料庫...

煩請各位解答...謝謝

贊助商連結


ranger
2005-08-18, 11:26 AM
不需要連遠端磁碟
因為asp是server side script
所以只要在安裝iis的電腦設好odbc連到同一台電腦的mdb即可
或者用oledb,可以不設odbc

Dim Provider, DBPath
Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
DBPath = "Data Source=" & Server.MapPath(FileName)
Set GetMdbConnection = GetConnection( Provider & DBPath )

lalahaha
2005-08-18, 11:39 AM
目前小弟為connection string為:

Set DBConnection=Server.CreateObject("ADODB.Connection")

ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("sa.mdb")

DBConnection.Open ConnectionString

Set RS=Server.CreateObject("ADODB.Recordset")

RS.Open "SA",DBConnection

以上的寫法是sa.mdb是放在IIS的預設目錄裡,但是現在mdb是放在網路上的另一台電腦ip為192.168.2.111,小弟的問題是如何把路徑指向那台電腦的MDB,煩請各位指導。謝謝 

ranger
2005-08-18, 11:45 AM
為什麼要把iis跟mdb放在不同的電腦上呢?
有什麼特殊考量嗎?
實在看不出來有何必要!!!
真有需要何不改用Server 級的資料庫

lalahaha
2005-08-18, 11:54 AM
為什麼要把iis跟mdb放在不同的電腦上呢?
有什麼特殊考量嗎?
實在看不出來有何必要!!!
真有需要何不改用Server 級的資料庫

1.因為預算不足
2.放資料庫的電腦的廠商不願意架SERVER因為牽涉到一些索賠的問題,怕架server電腦容易被攻擊

所以現在就卡在這些問題上打轉,沒有其他辦法能做嗎?

ranger
2005-08-18, 12:45 PM
如果一定要連絡路磁碟當然也可以
在設odbc時指向已連線的網路磁碟及路徑
connection string只要設為 "dsn=xxxx"即可
等號右的xxxx為設好的odbc名稱
例如
set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = "dsn=xxxx;"
只是用網路磁碟的方式更要注意安全考量

而且個人覺得mdb實在無需放在另一台電腦上
沒必要

lalahaha
2005-08-23, 09:03 AM
這週末嘗試著把您的語法加入到程式碼裡...但對DSN的寫法不熟,遇到些許問題...目前小弟在連結資料庫的程式碼部分為下,要如何把DSN的部分寫進去呢? 麻煩您指點迷津,謝謝:

<%
'宣告Connection(資料庫連結)物件
Set DBConnection=Server.CreateObject("ADODB.Connection")

'開啟資料庫通道
DBConnection.Open "sa"

'RECORDSET物件
Set RS=Server.CreateObject("ADODB.Recordset")

'開啟資料表
RS.Open "SA",DBConnection
%>

ranger
2005-08-23, 09:47 AM
這週末嘗試著把您的語法加入到程式碼裡...但對DSN的寫法不熟,遇到些許問題...目前小弟在連結資料庫的程式碼部分為下,要如何把DSN的部分寫進去呢? 麻煩您指點迷津,謝謝:

<%
'宣告Connection(資料庫連結)物件
Set DBConnection=Server.CreateObject("ADODB.Connection")

'開啟資料庫通道
DBConnection.Open "sa"

'RECORDSET物件
Set RS=Server.CreateObject("ADODB.Recordset")

'開啟資料表
RS.Open "SA",DBConnection
%>

少了
rs.ActiveConnection = "dsn=xxxx;"

lalahaha
2005-08-29, 04:15 PM
以下是小弟修改後的程式碼,ODBC現在設在K:(網路磁碟機)上且名稱為SA,使用DSN連結之後,還是沒辦法顯示資料。如果同樣設定把ODBC設在本機的C:上的話,資料顯示就沒問題。不知道是否程式哪各部份忘了加導致ODBC無法設在網路磁碟機上。那我的程式碼要如何改呢? 煩請各位大大指教...謝謝


<HTML>
<HEAD>
<TITLE>哲學之道中興保全</TITLE>
</HEAD>
<body bgcolor="#FFFFFF">
<Center><font size = "16">哲學之道中興保全 </font>


<%
Dim strDBDSN, strSQL, objDBConn, objRS, intFCount,intl
'資料庫的資料來源
strDBDSN = "DSN=sa;uid=jimmy;pwd=1234"
'資料庫查詢的語法
strSQL = "select * from messagebarhistory order by 發生日期 desc"
'建立資料庫連結物件
Set objDBConn = Server.CreateObject("ADODB.Connection")
objDBConn.Open strDBDSN
'執行SQL的資料庫查詢
Set objRS = objDBconn.Execute(strSQL)
'取得欄位數目
intFCount = objRS.Fields.Count-1
'檢查是否有紀錄
If Not objRS.Eof Then
Response.Write "<table border=1><tr>"
'顯示資料庫的欄位名稱
For intl = 0 to intFCount
Response.Write "<td><b>" & objRS(intl).Name & "</b></td>"
Next
Response.Write "</tr>"
'顯示資料庫內容
Do While Not objRS.Eof
Response.Write "</tr>"
'顯示每筆紀錄的欄位
For intl = 0 to intFCount
If objRS.Fields(intl).Value <> "" Then
Response.Write "<td valign = ""top"">" &_
objRS.Fields(intl).Value & "</td>"
Else
Response.Write "<td valign=""top"">-</td>"
End If
Next
Response.Write "</tr>"
objRS.MoveNext
Loop
Response.Write "</table>"
End If
objRS.Close
Set objRS = Nothing
objDBConn.Close
Set objDBConn = Nothing
%>
</center>
</body>
</html>