Why connecting to an OLEDB is giving me an connection error

久未见 提交于 2020-01-02 07:43:12

问题


I have the following code which is connecting to my database and retrieving some data from a table:

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

I get the following error:

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

When I change the connectionstring line to:

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

I get the following error:

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

How can I resolve the issue?

My Web.config file has the following line:

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

How, If, I can use the above line in my C# code?


回答1:


After much troubleshooting, I was able to figure out why it wasn't working. I rewrote the string like this:

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

That worked like a charm, in case someone else is having the same issue.




回答2:


Don't use "Integrated Security" when you are supplying the user ID and password.




回答3:


Using this video mentioned by Borat in the comments I was able to reference differences in the connection string to adjust mine. The video demonstrates windows authentication, so if that's not what you want be sure to add your own user id and password.

My issue was my provider attribute was referencing: "Provider=IBMDASQL.DataSource.1" when connection to DB/2 but the connection string when viewed as shown in the video was referencing, "IBMDA400.DataSource.1"

Funny, after watching the video, I already knew this, and have used this method but have forgotten. How quickly we forget things.



来源:https://stackoverflow.com/questions/23570878/why-connecting-to-an-oledb-is-giving-me-an-connection-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!