En supposant que vous voulez un DataTable
avec la liste des champs de votre table :
using (var con = new SQLiteConnection(preparedConnectionString))
{
using (var cmd = new SQLiteCommand("PRAGMA table_info(" + tableName + ");"))
{
var table = new DataTable();
cmd.Connection = con;
cmd.Connection.Open();
SQLiteDataAdapter adp = null;
try
{
adp = new SQLiteDataAdapter(cmd);
adp.Fill(table);
con.Close();
return table;
}
catch (Exception ex)
{ }
}
}
Le résultat du retour est :
- cid : id de la colonne
- name : le nom de la colonne
- type : le type de la colonne
- notnull : 0 ou 1 si la colonne peut contenir des valeurs nulles
- dflt_value : la valeur par défaut
- pk : 0 ou 1 si la colonne participe à la clé primaire.
Si vous voulez seulement les noms des colonnes dans un List
que vous pouvez utiliser (vous devez inclure System.Data.DataSetExtension
) :
return table.AsEnumerable().Select(r=>r["name"].ToString()).ToList();
EDIT : Ou vous pouvez éviter le DataSetExtension
en utilisant ce code :
using (var con = new SQLiteConnection(preparedConnectionString))
{
using (var cmd = new SQLiteCommand("PRAGMA table_info(" + tableName + ");"))
{
var table = new DataTable();
cmd.Connection = con;
cmd.Connection.Open();
SQLiteDataAdapter adp = null;
try
{
adp = new SQLiteDataAdapter(cmd);
adp.Fill(table);
con.Close();
var res = new List<string>();
for(int i = 0;i<table.Rows.Count;i++)
res.Add(table.Rows[i]["name"].ToString());
return res;
}
catch (Exception ex){ }
}
}
return new List<string>();
Il y a beaucoup de PRAGMA que vous pouvez utiliser dans SQLite, consultez le lien.
A propos de la using
C'est très simple, il est utilisé pour s'assurer que les objets jetables seront éliminés quoi qu'il arrive dans votre code : cf. ce lien o cette référence