2013-01-04 28 views
0


我創建了一個ASP.Net 4.0網站,並使用Visual Foxpro 8.0數據庫的OLEDB連接從表中選擇數據。使用的代碼是寫在下面......當在Windows7中託管網站時,Visual Foxpro 8.0無響應IIS 6.0

string strConnString = "Provider=vfpoledb;Data Source=C:\Users\mohammads\Documents\Visual FoxPro Projects\dbTallowMaster.dbc;"; 
    OleDbConnection connection = new OleDbConnection(strConnString); 
    connection.Open(); 
    string username = "675"; 
    string password = "675"; 
    string sqlQuery = "SELECT userinfoid, username, password FROM tm_userinfo.dbf WHERE username = \"" + username + "\" AND password = \"" + password + "\""; 
    OleDbCommand cmd = new OleDbCommand(sqlQuery, connection); 
    OleDbDataAdapter oOleDbDataAdapter = new OleDbDataAdapter(cmd); 
    DataTable dt = new DataTable(); 
    oOleDbDataAdapter.Fill(dt); 

這個代碼工作在本地系統中運行良好,但是當我主持這個網站上的Windows 7 IIS 6.0,然後連接不開,我得到錯誤「無效的路徑或文件名稱」。 請告訴我爲什麼這個代碼只有當我在IIS中託管它時纔會產生問題。

是否存在應在連接字符串的數據源的一些變化,而在IIS託管網站。請建議我有急事......

回答

2

一個側面說明...我將開始使用參數來建立查詢,尤其是從網上來。 VFP使用「?」作爲參數的佔位符,所以您不必明確地將值包含在引號中。

string sqlQuery = "SELECT userinfoid, username, password " 
    + "FROM tm_userinfo.dbf " 
    + "WHERE username = ? and password = ?"; 
OleDbCommand cmd = new OleDbCommand(sqlQuery, connection); 
cmd.Parameters.Add("parmUserName", OleDbType.Char).Value = username; // from your string 
cmd.Parameters.Add("parmPassword", OleDbType.Char).Value = password; // variables... 

OleDbDataAdapter oOleDbDataAdapter = new OleDbDataAdapter(cmd); 

注意參數的添加順序與「?」相同。在查詢中。

至於連接,應該不會是

「vfpoledb.1」,而不是在連接字符串中「vfpoledb」。

最後,一個考慮,因爲你的數據是在「用戶」子文件夾,它們通常是「限制」給該用戶。當運行IIS時,用戶通常類似於

IUSR_機器{}名代表的互聯網用戶,而不是你。所以權限可能是你的問題。

+0

感謝DRapp,你是對的,有權限相關的問題,因爲我的數據庫文件夾存在於用戶的子文件夾中。我添加一個許可所有人,並提供完整的訪問控制和我的問題得到解決Thanx了很多...... – Shoeb

+0

@Shoeb,歡迎您。另外,不要忘記,作爲新手,向上箭頭檢查答案可以幫助您,還可以單擊CHECKMARK查看解決方案的任何解決方案。這樣,其他尋找類似問題的人就知道什麼是有效的,並且可以幫助他們。 – DRapp

+0

我點擊了checkMark answer,並點擊向上箭頭。感謝名單 – Shoeb