1

我试图连接到名为“Remisiones”的SQL Server 2012数据库。我所做的确保连接字符串正确的是从项目属性(设置部分,我从那里添加连接字符串并成功测试连接)创建它。这是导致连接字符串:ASP.NET未连接到本地数据库

<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(); 
} 

这正如你所看到的,应打印的日期和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();线

+2

为什么你没有使用的SqlConnection,而不是OdbcConnection? – Fabio

+0

我可能做了错误的程序 – rdelfin

回答

3

您正在使用System.Data.Odbc连接和命令,但试图将它传递给System.Data.SqlClient连接字符串。这两者不可互换。

请将您的连接字符串更改为Odbc版本,或将您的代码更改为SqlClient版本。 (如果它是一个SQL Server数据库,我建议后者。)

你的代码,使用选项2将变为

你需要你的“使用”声明的代码文件的顶部改变(您的代码示例中不可见的,但我敢肯定它的存在),以inclue

using System.Data.SqlClient; 

,而不是

using System.Data.Odbc; 

,然后用语句应该工作(我没有检查它的下面小号yntax错误,但智能感知应该帮助,如果我有错误)

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可以发现here

+0

我必须将其更改为sqlClient字符串吗? – rdelfin

+0

@ rickyman20 - 我将代码添加到我的答案中,使其更加灵活。 – David

0

你需要建立在ODBC配置工具的ODBC连接(控制面板)发生。 或者,您可以使用sqlconnection而不是odbc。

0

您连接字符串是SqlConnection字符串不是ODBCConnection字符串。 ODBC连接字符串的样子:

Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Samples\Northwind.mdb

要么使用SqlConnection或更新您的连接字符串为一个有效的ODBC连接字符串。

1

看来,您的连接字符串是providerName="System.Data.SqlClient",但你的代码使用OdbcConnection - 改SqlConnection(和SqlCommand,SqlDataReader`等)应排在你出去