0

我有一個本地的SQLExpress數據庫。我需要從傳統的ASP Web應用程序連接到此。從經典ASP應用程序連接到SQLExpress

我覺得我的連接字符串是正確的,因爲當我測試使用C#控制檯應用程序,我能夠連接並讀取數據:

// C# Example app 
var connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=TestData;Integrated Security=True"; 
var con = new SqlConnection(connectionString); 

con.Open(); 
var cmd = new SqlCommand("SELECT * FROM tbl", con); 

cmd.ExecuteNonQuery(); 
var reader = cmd.ExecuteReader(); 
while(reader.Read()) 
{ 
    Console.WriteLine(reader.GetValue(1)); // displays data 
} 

然而,當我使用相同字符串,在我的ASP Web應用程序失敗:

// ASP Web App 
connection = Server.CreateObject("ADODB.Connection"); 
connectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=TestData;Integrated Security=True"; 
Response.Write("connectionString:" + connectionString + "<br/>"); 
connection.Open(Application(connectionString)); // error 

Open方法失敗:

0X80004005 - Microsoft OLE DB提供程序的ODBC驅動程序S: [微軟] [ODBC驅動程序管理器]數據源名稱未找到,沒有 指定默認驅動程序

我還試圖建立一個登錄SQL數據庫,並使用用戶ID和密碼:

var connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=TestData;User Id=AspTest;Password=Test"; 

這會以相同的方式失敗。

如何讓我的網絡應用程序連接到我的數據庫?

+0

嘗試刪除其中的反斜槓:'Data Source =。\\ SQLEXPRESS' – markpsmith

+0

@markpsmith 我得到了與Data Source =。\ SQLExpress相同的結果。 –

+0

我不明白如何更改連接字符串將有助於此處,因爲您可以看到我使用的連接字符串與我的C#示例一起使用。 –

回答

1

步驟:

  1. 添加用戶本地SQL數據庫(包括用戶名和 密碼)
  2. 給用戶的權限來讀取,在DB寫,選擇(一切)項目(因人而異 - 這是需要我的應用程序)
  3. 配置ODBC(32位)(C:\ WINDOWS \ Syswow64資料\ odbcad32.exe的),使得 「SqlConnectString」 使用SQL本機客戶端11連接到(本地)\ SQLEXPRESS

    • 設置SQL登錄憑據
    • 設置默認DB是TESTDB
  4. 變化從ASP連接代碼: CON。公開(申請( 「SqlConnectString」)); 到 con.Open(「DSN = SqlConnectString; User Id = [username]; Password = [password]」);

您的舊時間ASP代碼現在與SQL Express進行通信。

-1

你試過:

CONNSTRING = 「供應商= SQLOLEDB; SERVER = MYSERVER \ SQLEXPRESS;數據庫= MYDB; UID = SA; PWD =通過@#!」

2

如果ASP代碼,你是顯示的是您實際使用的內容,Application(connectionString)最有可能返回null/nothing,因爲應用程序對象是字典。您是否嘗試過直接使用連接字符串打開連接:

connection.Open(connectionString); 

通常的模式是分配Global.asa中的應用(「conectionString」)=「你的連接字符串」,然後使用follwing代碼來創建連接:

connection.Open(Application("connectionString")); 

此外,您將需要不同的ASP和.NET連接字符串,如上面的答案所示。

+0

請注意只在「Application」或「Session」對象中存儲連接字符串而不是'ADODB.connection'對象。 – Lankymart

+0

不喜歡使用Application(「connectionString」)模式,因爲對連接的更改需要重新啓動應用程序池。將它存儲在Session對象中會更好,因爲可以輕鬆放棄會話。 – Lankymart

+0

夠公平的。我的主要觀點是代碼使用連接字符串值作爲應用程序對象中的查找鍵。 – schudel