从 Classic ASP 应用程序连接到 SQLExpress
Connecting to SQLExpress from Classic ASP application
我有一个本地 SQLExpress 数据库。我需要从经典 ASP 网络应用程序连接到此。
我认为我的连接字符串是正确的,因为当我使用 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 网络应用程序中使用相同的字符串时,它失败了:
// 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 Provider for ODBC Drivers:
[Microsoft][ODBC Driver Manager] Data source name not found and no
default driver specified
我还尝试为 SQL 数据库设置登录并使用用户 ID 和密码:
var connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=TestData;User Id=AspTest;Password=Test";
同样失败。
如何让我的网络应用程序连接到我的数据库?
你试过了吗:
connString = "Provider=SQLOLEDB; SERVER=MYSERVER\SQLEXPRESS; Database=MYDB; Uid=sa; Pwd=Pass!@#"
如果您显示的 ASP 代码是您实际使用的代码,Application(connectionString) 很可能 returns null/nothing 因为应用程序对象是一个字典。您是否尝试过直接使用连接字符串打开连接:
connection.Open(connectionString);
通常的模式是在 global.asa 中分配 Application("conectionString") = "your connection string" 然后使用以下代码创建连接:
connection.Open(Application("connectionString"));
此外,您将需要 ASP 和 .NET 的不同连接字符串,如前一个答案所示。
步数:
- 为本地 SQL 数据库添加一个用户(包括用户名和
密码)
- 授予用户读取、写入、select(所有)数据库中项目的权限(YMMV - 这是我的应用程序所必需的)
配置 ODBC(32 位)(C:\Windows\SysWOW64\odbcad32.exe),以便 "SqlConnectString" 使用 SQL 本机客户端 11 连接到(本地)\SQL快递
- 设置SQL登录凭据
- 将默认数据库设置为测试数据库
更改 ASP 连接代码:
con.Open(应用程序("SqlConnectString"));
到
con.Open("DSN=SqlConnectString;User Id=[username];Password=[password]");
您的旧 ASP 代码现在与 SQL Express 通信。
我有一个本地 SQLExpress 数据库。我需要从经典 ASP 网络应用程序连接到此。
我认为我的连接字符串是正确的,因为当我使用 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 网络应用程序中使用相同的字符串时,它失败了:
// 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 Provider for ODBC Drivers: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
我还尝试为 SQL 数据库设置登录并使用用户 ID 和密码:
var connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=TestData;User Id=AspTest;Password=Test";
同样失败。
如何让我的网络应用程序连接到我的数据库?
你试过了吗:
connString = "Provider=SQLOLEDB; SERVER=MYSERVER\SQLEXPRESS; Database=MYDB; Uid=sa; Pwd=Pass!@#"
如果您显示的 ASP 代码是您实际使用的代码,Application(connectionString) 很可能 returns null/nothing 因为应用程序对象是一个字典。您是否尝试过直接使用连接字符串打开连接:
connection.Open(connectionString);
通常的模式是在 global.asa 中分配 Application("conectionString") = "your connection string" 然后使用以下代码创建连接:
connection.Open(Application("connectionString"));
此外,您将需要 ASP 和 .NET 的不同连接字符串,如前一个答案所示。
步数:
- 为本地 SQL 数据库添加一个用户(包括用户名和 密码)
- 授予用户读取、写入、select(所有)数据库中项目的权限(YMMV - 这是我的应用程序所必需的)
配置 ODBC(32 位)(C:\Windows\SysWOW64\odbcad32.exe),以便 "SqlConnectString" 使用 SQL 本机客户端 11 连接到(本地)\SQL快递
- 设置SQL登录凭据
- 将默认数据库设置为测试数据库
更改 ASP 连接代码: con.Open(应用程序("SqlConnectString")); 到 con.Open("DSN=SqlConnectString;User Id=[username];Password=[password]");
您的旧 ASP 代码现在与 SQL Express 通信。