2011-03-18 14 views
6

C# .NET 3.5 con un servidor SQL Server 2000, tengo una cadena de conexión en mi archivo app.config que se parece a esta cadenapalabra clave no es compatible error 'proveedor'

<add name="MFG_ConnectionString" 
    connectionString="Provider=SQLOLEDB;Data Source=MFG;Persist Security Info=True;Password=kb1234;User ID=kb;Initial Catalog=MFG" 
    providerName="System.Data.OleDb" /> 

Esta conexión fue construido con la asistente de configuración del origen de datos. Crear un conjunto de datos con esto y arrastrar el elemento DataSource para crear un DataGridView completa y permite con éxito todas las operaciones CRUD.

Sin embargo, no estoy buscando hacer cambios en esto a través de un formulario de datos. Estoy buscando hacer esto detrás de escena en el código. Dado que esta es una versión anterior de SQL Server, asumo que debo usar OleDbConnection y otros objetos OleDb para realizar el trabajo. Cuando trato de ejecutar el siguiente:

OleDbConnection visualConnection = new OleDbConnection(ConfigurationManager.ConnectionStrings["MFG_ConnectionString"].ConnectionString); 

consigo una excepción:.. "La palabra clave no soportado 'proveedor'
embargo, si saco proveedor me han dicho que debo suministrar uno No estoy seguro de por qué esto funciona a través del conjunto de datos en el formulario pero no puedo crear mi propia conexión objeto ... alguna idea?

EDITAR Cabe señalar que cuando originalmente creado la conexión a esta base de datos, que me dijo que la base de datos I estaba tratando de conectar NO era compatible con SqlConnection y que debo elegir otro (mi elección es OleDb en ese momento). Es extraño para mí que esta co Conexion trabaja detrás de las escenas como SqlConnection sin proveedor en la cadena de conexión, pero el conjunto de datos a continuación, rompe ...

Respuesta

1

SqlConnection funciona bien con SQL 2000. Puede obtener una muestra connectionstring here

+2

Cambiar a SqlConnection me da el mismo error , entonces entro y saco la parte del proveedor de la cadena y funciona bien. Ahora estoy tratando de descubrir por qué. Si cambio la cadena de conexión para excluir proveedor, el conjunto de datos deja de funcionar adecuadamente. ¿Es la única solución tener dos cadenas de conexión, una para el conjunto de datos y otra para la conexión manual? – Mohgeroth

+0

Cuando cambiaste a SqlConnection, tu cadena de conexión debería verse como una de las del sitio. Mi favorito personal es "Servidor = SOMESERVERNAME; Base de datos = SOMEDATABASENAME; ID de usuario = SOMEUSERID; Contraseña = SOMEPASSWORD;" - Con eso, no debería tener problemas para conectarse, independientemente de si está recuperando un DataSet, un lector, ejecutando comandos o usando cualquier ORM. –

+0

que es a lo que me cambié, y funciona muy bien en el código. Sin embargo, todos los controles en los formularios vinculados al conjunto de datos que utilizan esta conexión dejan de funcionar porque ya no pueden interpretar la cadena de conexión. Por alguna razón, sin un proveedor en la cadena de conexión, pierdo la capacidad del enlace del conjunto de datos en mis formularios – Mohgeroth

Cuestiones relacionadas