为什么连接到OLEDB会给我一个连接错误

时间:2014-05-09 17:40:11

标签: sql sql-server oledb

我有以下代码连接到我的数据库并从表中检索一些数据:

    string connectionString = "Data Provider=SQLOLEDB;Data Source=myserver;Initial Catalog=Db;Integrated Security=FALSE;user=zh;pwd=zh12;";
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
    connection.Open();

    OleDbCommand command = new OleDbCommand();
    command.Connection = connection;
    command.CommandText = "SELECT [Location], [URL], [TAGS] FROM [Db].[dbo].[BOOKINGTABLE]";
    command.CommandType = CommandType.Text;

    using (OleDbDataReader reader = command.ExecuteReader())
    {
        menu_ul_1.DataSource = reader;
        menu_ul_1.DataBind();
    }
}

我收到以下错误:

Exception Details: System.ArgumentException: An OLE DB Provider was not specified in the ConnectionString. An example would be, 'Provider=SQLOLEDB;'.

当我将连接字符串行更改为:

string connectionString = "Provider=SQLOLEDB;Data Source=myserver;Initial Catalog=Db;Integrated Security=FALSE;user=zh;pwd=zh12;";

我收到以下错误:

Exception Details: System.Data.OleDb.OleDbException: No error message available, result code: DB_E_ERRORSOCCURRED(0x80040E21).

Source Error: 


Line 23: using (OleDbConnection connection = new OleDbConnection(connectionString))
Line 24: {
Line 25:     connection.Open();
Line 26: 
Line 27:     OleDbCommand command = new OleDbCommand(); 

我该如何解决这个问题?

我的Web.config文件包含以下行:

<add key="ConnStringTEST" value="Data Source=myserver;Initial Catalog=Db;Integrated Security=FALSE;user=zh;pwd=zh12;" />

如何,如果,我可以在我的C#代码中使用上述行?

3 个答案:

答案 0 :(得分:2)

经过多次故障排除后,我能够弄清楚它为什么不起作用。我重写了这样的字符串:

string cString = "Provider=sqloledb;Data Source=myserver;Initial Catalog=mydatabase;User Id=myid;Password=mypassword;";

这就像一个魅力,以防其他人遇到同样的问题。

答案 1 :(得分:1)

不要使用&#34; Integrated Security&#34;当您提供用户ID和密码时。

答案 2 :(得分:0)

在评论中使用Borat提到的video我能够引用连接字符串中的差异来调整我的。该视频演示了Windows身份验证,因此,如果这不是您想要的,请务必添加您自己的用户ID和密码。

我的问题是我的提供程序属性引用了:“Provider = IBMDASQL.DataSource.1”当连接到DB / 2时,但是当视频中显示的连接字符串引用时,“IBMDA400.DataSource.1”

有趣的是,在观看视频之后,我已经知道了这一点,并且已经使用过这种方法,但已经忘记了。我们多快忘记了事情。