Web SQL从表中获取列列表
Web SQL get column list from table
我尝试从Web sql (Chrome本地数据库)获取列列表。Оne of the decisions - get info from sqlite_master
SELECT name, sql FROM sqlite_master WHERE type="table" AND name = "'+name+'";
例如,我得到这个结果
CREATE TABLE table_name ( id INTEGER PRIMARY KEY AUTOINCREMENT,
number INTEGER unique, description TEXT, password TEXT, url TEXT )
帮我写一下获取列名的正则表达式,或者,告诉我另一种获取列名的简单方法。
p。我不想做select * from table
…用于获取列名。我认为这是一个糟糕的解决方案。
要获取表的列,执行PRAGMA table_info(table_name)
:
杂注table_info ()
为指定表的每列返回一行。的列返回的数据集是:
- cid:列号(从左到右编号,从0开始)
- name:列名
- type:列声明类型
- notnull:如果'
NOT NULL
'是列声明的一部分- dflt_value:列的默认值,如果有的话。
不幸的是,Chrome阻止所有的PRAGMA
s,所以这在WebSQL中不起作用。
在WebSQL中,你只能访问由你的应用程序创建的表,所以你应该记住你的表有哪些列。
或者,您可以尝试从表中读取:
SELECT * FROM table_name LIMIT 1
对于LIMIT
子句,这将是非常有效的,因为您只读取一些随机记录。(除非你的记录中有一些非常大的斑点)
在chrome中,这为我工作与html5sql。我还做了一个codepen,它使用纯html5,带有一个很酷的基于promise的查询功能,在这里。
function getDB(cb){
html5sql.process("SELECT * FROM sqlite_master WHERE name NOT LIKE 'sqlite''_%' escape '''' AND name NOT LIKE '''_%' escape ''''", function(txTables, rsTables, tables){
if (!tables.length) return cb(null, []);
tables.forEach(function(table){
var s = table.sql.split(',');
s[0] = s[0].replace(new RegExp('create''s+table''s+' + table.name + '''s*''(', 'i'),'');
table.fields = s.map(function(i){
return i.trim().split(/'s/).shift();
})
.filter(function(i){
return (i.indexOf(')') === -1)
})
});
cb(null, tables)
}, cb);
}
这会像这样触发你的(error, tables)
回调:
[{
"type": "table",
"name": "Users",
"tbl_name": "Users",
"rootpage": 6,
"sql": "CREATE TABLE Users('n id INTEGER PRIMARY KEY AUTOINCREMENT,'n firstName VARCHAR(255),'n lastName VARCHAR(255),'n email VARCHAR(255),'n created TIMESTAMP DEFAULT (DATETIME('now','localtime'))'n)",
"fields": [
"id",
"firstName",
"lastName",
"email",
"created"
]
}]
注意fields
部分。这是有效的,即使没有记录。正则表达式/字符串解析可能需要一些改进,您也可能使用它来获取类型信息,但这似乎适用于我所有的用例。知道字段名后的另一种方法是SQL:
SELECT TYPEOF(id) as id, TYPEOF(firstName) AS firstName , TYPEOF(lastName) AS lastName, TYPEOF(email) AS email, TYPEOF(created) AS created FROM Users;
相关文章:
- 如何在jquery中获取列表项的最顶端父项的文本
- 根据列表元素的值使用JQuery获取列表元素
- 正在获取列表项位置()
- 如何在委托中获取列表项中元素的内部HTML
- 用javascript从mysql中获取列表变量
- 在 jQuery 的自动完成中获取列表项单击的名称
- Jquery - 如何获取列表项中的元素
- 在 django 中获取列表值
- 在 Vista Gadget 中使用 Javascript 获取列表数据
- 使用 SPServices 从另一个域上的 SharePoint 获取列表项总数
- jQuery:如何获取列表元素的索引
- 获取列表项中当前 ID 的值
- 获取列表项的值并发布到 ajax
- 获取列表中的第一个 DOM 元素
- 获取列表项的文本内容
- 如何在javascript中获取列表中td的值
- $ionicLoading在从Ionic中的Firebase获取列表期间未显示
- Iscroll-Jquery-获取列表项的位置
- 从自动填充的JSON列表中获取列表选项值,并传递给JS函数
- 如何获取列表项'JSON加载的未排序列表中的s id