62 votes

Comment obtenir une liste de noms de colonnes

Est-il possible d'obtenir une ligne avec tous les noms de colonnes d'un tableau comme celui-ci ?

|id|foo|bar|age|street|address|

Je n'aime pas utiliser Pragma table_info(bla) .

95voto

Konstantin Tarkus Points 16862
SELECT sql FROM sqlite_master
WHERE tbl_name = 'table_name' AND type = 'table'

Analysez ensuite cette valeur avec Reg Exp (c'est facile), ce qui pourrait ressembler à ceci : [(.*?)]

Vous pouvez également utiliser :

PRAGMA table_info(table_name)

38voto

Si vous utilisez le shell de ligne de commande pour SQLite, alors .headers on avant d'effectuer votre requête. Vous ne devez effectuer cette opération qu'une seule fois au cours d'une session donnée.

9voto

Owen Pauling Points 222

Oui, vous pouvez le faire en utilisant les commandes suivantes :

sqlite> .headers on
sqlite> .mode column

Le résultat d'une sélection sur votre table sera alors le suivant :

id          foo         bar         age         street      address
----------  ----------  ----------  ----------  ----------  ----------
1           val1        val2        val3        val4        val5
2           val6        val7        val8        val9        val10

7voto

Ömrüm Çetin Points 169

Vous pouvez utiliser des commandes liées à des pragmes dans sqlite comme ci-dessous

pragma table_info("table_name")
--Alternatively
select * from pragma_table_info("table_name")

Si vous avez besoin de noms de colonnes comme id|foo|bar|age|street|address En fait, votre réponse se trouve dans la question ci-dessous.

select group_concat(name,'|') from pragma_table_info("table_name")

6voto

GeekTantra Points 2606

Cela aide pour HTML5 SQLite :

tx.executeSql('SELECT name, sql FROM sqlite_master WHERE type="table" AND name = "your_table_name";', [], function (tx, results) {
  var columnParts = results.rows.item(0).sql.replace(/^[^\(]+\(([^\)]+)\)/g, '$1').split(','); ///// RegEx
  var columnNames = [];
  for(i in columnParts) {
    if(typeof columnParts[i] === 'string')
      columnNames.push(columnParts[i].split(" ")[0]);
  }
  console.log(columnNames);
  ///// Your code which uses the columnNames;
});

Vous pouvez réutiliser la regex dans votre langage pour obtenir les noms des colonnes.

Alternative plus courte :

tx.executeSql('SELECT name, sql FROM sqlite_master WHERE type="table" AND name = "your_table_name";', [], function (tx, results) {
  var columnNames = results.rows.item(0).sql.replace(/^[^\(]+\(([^\)]+)\)/g, '$1').replace(/ [^,]+/g, '').split(',');
  console.log(columnNames);
  ///// Your code which uses the columnNames;
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X