我正在尝试连接到名为“Remisiones”的SQL Server 2012数据库。我所做的是确保连接字符串是正确的是从项目属性创建它(设置部分,我从那里添加连接字符串并成功测试连接)。这是结果连接字符串:
<configuration>
<connectionStrings>
<add name="Remisiones.Properties.Settings.ConnString" connectionString="Data Source=ComputerName\SQLEXPRESS;Initial Catalog=Remisiones;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
More configuration...
</configuration>
然后,使用它并连接到数据库,如下所示:
using (OdbcConnection connection = new OdbcConnection(ConfigurationManager.ConnectionStrings["Remisiones.Properties.Settings.ConnString"].ConnectionString))
{
connection.Open();
using (OdbcCommand command = new OdbcCommand("SELECT ID, Date FROM Remisiones", connection))
using (OdbcDataReader dr = command.ExecuteReader())
{
while (dr.Read())
{
Result.Text += dr["ID"].ToString();
Result.Text += "\n";
Result.Text += dr["Date"].ToString();
break;
}
Result.Text += "</table>";
}
connection.Close();
}
如您所见,应该打印数据库中前两项的Date和ID列值。问题是,它给了我错误:
ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.Odbc.OdbcException: ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
我做错了什么?
编辑:错误发生在connection.Open();
行
答案 0 :(得分:3)
您正在使用System.Data.Odbc连接和命令,但尝试将其传递给System.Data.SqlClient连接字符串。这两者不可互换。
将连接字符串更改为Odbc版本,或将代码更改为SqlClient版本。 (如果是SQL Server DB,我建议使用后者。)
您的代码,使用选项2将更改为
你需要更改代码文件顶部的“using”语句(在代码示例中不可见,但我确定它在那里)包含
using System.Data.SqlClient;
而不是
using System.Data.Odbc;
然后使用以下using语句(我没有检查它是否有语法错误,但如果我有错误,Intellisense应该有帮助)
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["Remisiones.Properties.Settings.ConnString"].ConnectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand ("SELECT ID, Date FROM Remisiones", connection))
using (SqlDataReader dr = command.ExecuteReader())
{
while (dr.Read())
{
Result.Text += dr["ID"].ToString();
Result.Text += "\n";
Result.Text += dr["Date"].ToString();
break;
}
Result.Text += "</table>";
}
connection.Close();
}
可以找到大量的连接字符串示例,包括System.Data.SqlClient和System.Data.OleDb {。{3}}。
答案 1 :(得分:1)
您的连接字符串似乎是providerName="System.Data.SqlClient"
,但您的代码使用OdbcConnection
- 更改SqlConnection
(和SqlCommand
,SqlDataReader`等)应该排序出
答案 2 :(得分:0)
您需要在odbc配置工具(在控制面板中)中设置odbc连接。 或者,您可以使用sqlconnection而不是odbc。
答案 3 :(得分:0)
您的连接字符串是SqlConnection
字符串而不是ODBCConnection
字符串。 ODBC连接字符串如下所示:
Driver = {Microsoft Access Driver(* .mdb)}; DBQ = C:\ Samples \ Northwind.mdb
使用SqlConnection
或将连接字符串更新为有效的ODBC连接字符串。