Supponendo che si desidera un DataTable
con l'elenco di campo della tabella:
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)
{ }
}
}
risultato di ritorno è:
- cid: id della colonna
- nome: il nome di la colonna
- tipo: il tipo della colonna
- notnull: 0 o 1 se il barattolo colonna contiene valori nulli
- dflt_value: il valore di default
- pk: 0 o 1 se la colonna partecipa alla chiave primaria
Se si desidera che solo i nomi delle colonne in un List
è possibile utilizzare (è necessario includere System.Data.DataSetExtension
):
return table.AsEnumerable().Select(r=>r["name"].ToString()).ToList();
EDIT: Oppure si può evitare il riferimento DataSetExtension
utilizzando questo codice:
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>();
Ci sono molte istruzioni PRAGMA che è possibile utilizzare in SQLite, dare un'occhiata al collegamento.
circa la dichiarazione using
: è molto semplice, è usato per essere sicuri che gli oggetti usa e getta saranno smaltiti ciò che può accadere nel codice: vedi this link o this reference
fonte
2013-07-18 08:02:49
E non hai risposto alla domanda perché? (o aggiungi un commento alla risposta a cui ti colleghi, che probabilmente sarebbe stato meglio) –
Intendi questa domanda (1) o l'altra (2)?1: Perché StackOverflow mi consente di farlo solo dopo 2 ore (che ho realizzato solo dopo aver fatto la domanda). 2: Perché la risposta sarebbe stata doppia (e quindi una modifica è migliore) –