registrado redistribuible proveedor motor microsoft está equipo datos componente c# asp.net winforms ado.net

c# - redistribuible - Excel para acceder a error de importación



componente redistribuible del motor de base de datos de microsoft access 2016 (2)

El error suena correcto. Parece que Persons $ está en la hoja de cálculo pero has abierto una conexión a la base de datos (no puedes hacer una "inserción en seleccionar desde" porque no están en la misma base de datos o vinculados). Es probable que necesite abrir una conexión a ambos (luego consultar uno, insertar en el otro). Algo como el pseudo código siguiente funcionaría:

1.) Abra una conexión a la base de datos de acceso como lo hizo.

2.) Abra una conexión separada a la hoja de cálculo.

3.) Consultar las personas $ en la hoja de cálculo, devolver decir un DataReader (ExecuteReader).

4.) Iterar el DataReader y ejecutar una instrucción de inserción para cada fila (insertar en la base de datos de acceso). Use una declaración parametrizada para proteger contra las inyecciones de SQL / cosas que desordenarán el SQL inadvertidamente. Está hablando desde una fuente de datos y está ingresando en el otro registro por registro.

Si le preocupa que todo el lote de registros ingrese, use una transacción y repliegue si hay algún error. Eso asegurará que obtengas todo o nada.

Propósito: Importar datos de excel a la base de datos ms access (.mdb).

Referencia: https://www.mikesdotnetting.com/article/79/import-data-from-excel-to-access-with-asp-net

Tecnología: C # .net Windows Forms

Error: "El motor de la base de datos Microsoft Jet no puede encontrar la tabla de entrada o consulta ''Personas $''. Asegúrese de que exista y de que su nombre esté escrito correctamente".

Código:

private void button6_Click(object sender, EventArgs e) { string Access = @"c:/exportdb/DestinationDB.mdb"; string connect = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/exportdb/DestinationDB.mdb;"; using (OleDbConnection conn = new OleDbConnection(connect)) { using (OleDbCommand cmd = new OleDbCommand()) { cmd.Connection = conn; cmd.CommandText = "INSERT INTO [MS Access;Database=" + Access + "].[Persons] SELECT * FROM [Persons$]"; conn.Open(); cmd.ExecuteNonQuery(); } } }

Nota : He creado una base de datos de MS Access llamada "DestinationDB.mdb" con el nombre de la tabla como "Personas" con los siguientes campos: ContactID, FirstName, SecondName, Age

A partir de entonces, he exportado el mismo para sobresalir a fin de mantener la estructura del encabezado.

Una vez exportado este Excel, agregué unos 10 registros manualmente.

Ambos archivos se encuentran en "c: //exportdb/source.xls" y "c: //exportdb/DestinationDB.mdb".

Instantánea de Excel:

Instantánea de acceso de la Sra.

Por favor, ayúdame a resolver el error mencionado anteriormente.

¡Gracias!


Su cadena de conexión no coincide con la referencia que está siguiendo:

Su cadena de conexión:

string connect = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/exportdb/DestinationDB.mdb;";

Su cadena de conexión tiene las propiedades extendidas y especifica Excel 8.0:

string connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Excel +";Extended Properties=Excel 8.0;";

El otro problema es que su fuente de datos es la base de datos de acceso DestinationDB.mdb, observe cómo la referencia que está siguiendo especifica Excel como la fuente de datos.