我有一个本地SQLExpress数据库。我需要从经典的ASP Web应用程序连接到它。
我认为我的连接字符串是正确的,因为当我使用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 - 用于ODBC驱动程序的Microsoft OLE DB提供程序: [Microsoft] [ODBC驱动程序管理器]未找到数据源名称,没有 指定默认驱动程序
我还尝试为SQL数据库设置登录并使用用户ID和密码:
var connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=TestData;User Id=AspTest;Password=Test";
这以同样的方式失败。
如何让我的网络应用程序连接到我的数据库?
答案 0 :(得分:2)
如果您显示的ASP代码是您实际使用的,则Application(connectionString)很可能返回null / nothing,因为应用程序对象是字典。您是否尝试直接使用连接字符串打开连接:
connection.Open(connectionString);
通常的模式是在global.asa中分配Application(“conectionString”)=“your connection string”,然后使用以下代码创建连接:
connection.Open(Application("connectionString"));
此外,您需要为ASP和.NET提供不同的连接字符串,如前面的答案所示。
答案 1 :(得分:1)
步骤:
配置ODBC(32位)(C:\ Windows \ SysWOW64 \ odbcad32.exe),以便&#34; SqlConnectString&#34;使用SQL本机客户端11连接到(本地)\ SQLEXPRESS
更改ASP连接代码: con.Open(应用(&#34; SqlConnectString&#34)); 至 con.Open(&#34; DSN = SqlConnectString;用户ID = [用户名];密码= [密码]&#34;);
您过时的ASP代码现在与SQL Express进行对话。
答案 2 :(得分:-1)
你试过了吗?
connString =“Provider = SQLOLEDB; SERVER = MYSERVER \ SQLEXPRESS; Database = MYDB; Uid = sa; Pwd = Pass!@#”