作者:惬听风吟jyy_802 | 2023-08-25 17:02
对于踢,我正在编写一个"模式文档"工具,用于生成数据库中表和关系的描述.我目前正在填补它与SQLite合作.
我已经设法通过sqlite_master
表上的查询提取SQLite数据库中所有表的名称.对于每个表名,我然后触发一个简单的名称
select * from
查询,然后使用sqlite3_column_count()
和sqlite3_column_name()
API收集列名称,我进一步提供sqlite3_table_column_metadata()
以获取其他信息.很简单吧?
问题是它只适用于非空的表.也就是说,sqlite_column_*()
API仅sqlite_step()
在返回时才有效SQLITE_ROW
,而空表不是这种情况.
所以问题是,我如何发现空表的列名?或者,更一般地说,是否有更好的方法在SQLite中获取此类模式信息?
我觉得必须有另一个隐藏的sqlite_xxx
表隐藏在包含这些信息的地方,但到目前为止还没有找到它.
1> 小智..: sqlite> .header on
sqlite> .mode column
sqlite> create table ABC(A TEXT, B VARCHAR);
sqlite> pragma table_info(ABC);
cid name type notnull dflt_value pk
---------- ---------- ---------- ---------- ---------- ----------
0 A TEXT 0 0
1 B VARCHAR 0 0
看起来像在命令行上工作 - 如何以编程方式实现相同的效果? @pragmanatu是你的昵称巧合吗?:) 2> Nick Dandoul..: 执行查询:
PRAGMA table_info( your_table_name );
文档
3> GeekTantra..: PRAGMA table_info( your_table_name );
在HTML5 SQLite中不起作用。
这是一个小的HTML5 SQLite JavaScript代码段,即使您的列为空,它也会从your_table_name获取列名。希望对您有所帮助。
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(',');
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;
});
推荐阅读
如何解决《ToolBarAndroid无法在ReactNative中渲染》经验,为你挑选了3个好方法。 ...
[详细]
如何解决《如何取消AsyncTaskLoader工作?》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《R-apply-将许多列从数字转换为因子》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《是否有可能在Haskell中筑巢?》经验,为你挑选了4个好方法。 ...
[详细]
如何解决《将<IMG>转换为base64Javascript》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《WindowsPATH中的某些字符串导致错误》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《具有WebviewUI的Java桌面应用》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《在光标位置放大NSScrollView》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《在angular2中,如何在为@Input发送的对象上更改属性的onChanges》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《使用CryptoNode.js获取错误"数据对于密钥大小而言太大"》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《AzureWebJobsDashboard配置错误》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《在Rails中使用PostgresUUID时,在Join记录上创建,保存,更新和销毁》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《用于计算百分位数的条件数组》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《我可以使用Rdata.table连接功能来选择行并执行某些操作吗?》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《这个简单的C++程序使用<locale>是否正确?》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《从两个8位整数计算16位整数值?》经验,为你挑选了2个好方法。 ...
[详细]
如何解决《更改Bluemix帐户默认区域?》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《Java我不明白为什么在更改switch语句的顺序时会得到不同的输出》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《神秘的ESLint解析错误》经验,为你挑选了2个好方法。 ...
[详细]
如何解决《EmberJS单元测试服务注入(EmberQUnit)》经验,为你挑选了1个好方法。 ...
[详细]
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!