Je veux récupérer tous les noms de colonne pour une table spécifique .. p>
J'utilise MSAccess et C # .NET 2008. P>
5 Réponses :
Vous pouvez récupérer des informations de schéma pour une requête donnée via OLEDB à l'aide du Schemaonly CommandBehavior et le Méthode greatematable , comme suit:
monsieur ses noms de colonne de retour avec des minuscules comme j'ai ColumnName = ObjectId, mais il retourne ObjectId
Cela récupère toutes les colonnes de toutes les tables et vues
une variante de la méthode de BABI pour une table spécifique: Bien sûr, vous voudrez peut-être vérifier si la table existe effectivement avant de recevoir ses noms de colonne: P> public bool TableExists(string tableName)
{
var conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.mdb";
using (var connection = new OleDbConnection(conStr))
{
connection.Open();
var tables = connection.GetSchema("Tables");
var tableExists = false;
for (var i = 0; i < tables.Rows.Count; i++)
{
tableExists = String.Equals(tables.Rows[i][2].ToString(),
tableName,
StringComparison.CurrentCultureIgnoreCase);
if (tableExists)
break;
}
return tableExists;
}
}
J'ai trouvé cet article en essayant de créer une application C # pour migrer une base de données d'accès. La base de données que je migre est un fichier Access 2007/2010 avec une extension .Accdb.
Si vous utilisez ce code sur une table contenant des colonnes MEMO ou Pièce jointe (disponible dans les fichiers ACCDB), il retournera le type de ces colonnes. En tant que chaîne (WCHAR). P>
J'ai eu du mal à trouver beaucoup d'informations sur la manière de traiter ces types de colonnes. Je voulais donc fournir un lien à l'article qui m'a aidé à comprendre comment les gérer:
https: / /social.msdn.microsoft.com/forums/vstudio/en-us/d15606f9-f38d-4a1b-8ce3-000C558E79C5 P>
J'ai pris l'exemple inférieur dans ce fil et converti en C # . Je devais ajouter ceci à l'aide du module pour éviter d'éditer toutes les références à "AccessDao": P>
using AccessDao = Microsoft.Office.Interop.Access.Dao;
Voici le code pour obtenir les noms de colonne basé sur l'exemple de code de Qnaninf: P>
Vous devez fournir plus d'informations. Comment accédez-vous à la base de données?
@Daniel c'est ma chaîne de connexion .. Strentrine Strconnection = "Fournisseur = Microsoft.Jet.Oledb.4.0; Source de données =" + System.Environment.CurrentDirectory + "\\ test.mdb";
Utilisez-vous un
sqlconnection code> pour accéder à la base de données?
@Daniel J'utilise OLEDB pour accéder à la base de données. Désolé je suis nouveau à .NET.