Zakładając chcesz DataTable
z listy pola tabeli:
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)
{ }
}
}
return result jest:
- cid: id kolumny
- name: nazwa Typ kolumny: typ kolumny
- : typ kolumny
- notnull: 0 lub 1 jeśli puszka kolumna zawiera wartości null
- dflt_value: wartość domyślną
- pk: 0 lub 1, jeśli partecipate kolumna klucza podstawowego
Jeśli chcesz tylko nazwy kolumn w List
można wykorzystać (trzeba to System.Data.DataSetExtension
):
return table.AsEnumerable().Select(r=>r["name"].ToString()).ToList();
EDIT: Albo można uniknąć odniesienia DataSetExtension
przy użyciu tego kodu:
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>();
Istnieje wiele instrukcji PRAGMA, których można używać w SQLite, spójrz na link.
O rachunku using
: to bardzo proste, jest on stosowany, aby mieć pewność, że jednorazowe obiekty zostaną umieszczone co może się zdarzyć w kodzie: patrz this link lub this reference
A ty nie odpowiedziałeś na pytanie, ponieważ? (lub dodaj komentarz do odpowiedzi, do której linkujesz, co prawdopodobnie byłoby lepiej). –
Masz na myśli to pytanie (1) lub inne (2)?1: Ponieważ stackoverflow pozwala mi to zrobić po 2 godzinach (co zrealizowałem dopiero po zadaniu pytania). 2: Ponieważ odpowiedź byłaby podwójna (a zatem zmiana jest lepsza) –