Necesito ver si existe una tabla en una base de datos de Access utilizada por mi programa C#. Se sabe que hay comandos SQL para otras bases de datos que devolverán una lista de tablas. ¿Existe tal comando para las bases de datos de Access/Jet?¿Cómo puedo obtener una lista de tablas en una base de datos de Access (Jet)?
Respuesta
Prueba el GetSchema()
connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\access.mdb";
connection.Open();
DataTable userTables = connection.GetSchema("Tables");
código completo: Get List of Tables in an Access Database - ADO.NET Tutorials
// Microsoft Access provider factory
DbProviderFactory factory =
DbProviderFactories.GetFactory("System.Data.OleDb");
DataTable userTables = null;
using (DbConnection connection =
factory.CreateConnection())
{
// c:\test\test.mdb
connection.ConnectionString = "Provider=Microsoft
.Jet.OLEDB.4.0;Data Source=c:\\test\\test.mdb";
// We only want user tables, not system tables
string[] restrictions = new string[4];
restrictions[3] = "Table";
connection.Open();
// Get list of user tables
userTables =
connection.GetSchema("Tables", restrictions);
}
// Add list of table names to listBox
for (int i=0; i < userTables.Rows.Count; i++)
listBox1.Items.Add(userTables.Rows[i][2].ToString())
aquí es la respuesta para usted: http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/d2eaf851-fc06-49a1-b7bd-bca76669783e
Algo como esto debe hacer el truco. La cláusula Type = 1
especifica tablas. Tenga en cuenta que esto también incluye las tablas del sistema en el conjunto de resultados (que empiezan con el prefijo "MSys"
SELECT Name FROM MSysObjects WHERE Type = 1
tratando y me sale:. 'Record (s) no se puede leer, no hay permiso de lectura en 'MSysObjects'. – hawbsl
@hawbsl Parece que podría necesitar modificar los permisos dentro de Access Database. Menú Herramientas -> Seguridad -> Permisos de usuario y grupo. Asignar 'Leer datos' permiso para el usuario administrador en la tabla MSysObjects. –
Cambiar permisos como ese violaría quizás la seguridad a nivel de usuario que se ha configurado a propósito. La solución es no cambiar los permisos en el objeto subyacente (que lo abriría completamente a nadie), sino usar un nombre de usuario/contraseña que tenga los permisos que necesita. –
- 1. ¿Cómo puedo obtener nombres de tablas de una base de datos MS Access?
- 2. ¿Cómo creo una base de datos Microsoft Jet (Access) sin un ensamblado de interoperabilidad?
- 3. ¿Cómo convertir una base de datos JET a SQLite?
- 4. Completar una base de datos de MS Access en Linux
- 5. Accediendo a una base de datos JET (.mdb) en Python
- 6. ¿Cómo obtener la lista de tablas secundarias para una tabla de base de datos?
- 7. ¿Cómo puedo "encadenar" tablas vinculadas en Access?
- 8. Obtener nombres de tablas de una base de datos
- 9. ¿Cómo puedo obtener la lista de columnas en una tabla para una base de datos SQLite?
- 10. Lista de todas las tablas en la base de datos
- 11. Cómo comprimir una base de datos MS Access
- 12. Cómo exportar todas las tablas de una Base de datos de Access a Excel - Una hoja para cada tabla
- 13. Sincronización de base de datos Access en una Distributed App
- 14. Cómo obtener una lista de todas las tablas en dos bases de datos diferentes
- 15. ¿Cómo se muestra una lista de tablas en otra base de datos?
- 16. ¿Cómo obtener la lista de tablas en la base de datos, usando MS SQL 2008?
- 17. ¿Cómo obtener la lista de activadores activos en una base de datos?
- 18. base de datos Access en Android
- 19. Recuperar lista de tablas en el archivo MS Access
- 20. ¿Cómo exportar una base de datos de Access completa a SQL Server?
- 21. ¿Cómo puedo obtener los nombres de campo de una tabla de base de datos?
- 22. Máximo de tablas en una base de datos MySQL
- 23. ¿Cómo puedo obtener una lista de tablas en una base de datos de SQL Server junto con la clave principal utilizando SOLAMENTE C#?
- 24. SQL Seleccionar la lista de tablas en una base de datos
- 25. Cómo visualizar la relación de tablas en una base de datos Oracle
- 26. Agrupación de tablas dentro de una base de datos MySQL
- 27. Recuperar una lista de todas las tablas en la base de datos
- 28. ¿Cómo puedo obtener la intercalación de una tabla específica en una base de datos?
- 29. Creando una base de datos MS Access usando python
- 30. Conexión de Excel oledb al acceso de bloqueo de base de datos Ms-Access db
¡Tantas grandes respuestas elegantes cuando esto era todo lo que quería! ¡¡Gracias!! – CindyH