`
achun
  • 浏览: 307047 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

对SQLite的CREATE TABLE语句偷懒分析

阅读更多

最近要做一个基于gears的SQLite数据库设计器,本来SQLite支持

PRAGMA table_info(tablename)
 

这样的语法,来获得表结构的信息,可以方便的 提取 表结构.

可是gears为了安全起见,禁用了 PRAGMA 语法.这造成要写代码分析SQLite的CREATE TABLE语句,提取tableinfo.

可是要写一个SQL语法分析器,对我目前的水平来说还达不到.怎么办?

我用了一个偷懒的方法,就是简化字段设计.

我把字段设计简化成下面的结构

  1. name:字段名
  2. type:类型,比如INTEGER,VARCHAR,DATE等
  3. length:长度,如果有长度的话直接写成(10)或者(8,2)这样带括号的形式
  4. constraint:约束,也就是常用的 column-constraint 的组合,比如
    ""
    NOT NULL
    UNIQUE NOT NULL
    PRIMARY KEY AUTOINCREMENT NOT NULL
    PRIMARY KEY UNIQUE NOT NULL
  5. sql:附加语句,用来直接写 DEFAULT , COLLATE, CHECK 或者上面的约束语法

当然这样的设计要求使用者很了解SQL的语法,不会犯type选择了VARCHAR,constraint选择了 PRIMARY KEY AUTOINCREMENT NOT NULL这样的错误.这显然不是大 问题.然后把这些定义生成以回车为分隔符的SQL语句,让gears database API 执行.获取的时候只要

SELECT sql FROM sqlite_master WHERE type="table" and tbl_name="tablename"

获取SQL语句,在逆上面的过程(回车分隔让事情简单化了),就可以回填到设计器里面.

对于其他的语法我打算如法炮制

这个方法虽然笨拙,不过在没有水平写SQL语法分析器的时候还是可以抵挡一下的.

 

0
0
分享到:
评论

相关推荐

    android sqlite常用操作语句

    android中 sqlite数据库操作中常用的SQL 语句,留下备用,防止出错

    sqldelight,从create table语句生成java模型。.zip

    sqldelight从sql语句生成类型安全api。它编译时验证您的模式、语句和迁移,并提供IDE功能,如自动完成和重构,使编写和维护SQL变得简单。sqldelight目前支持sqlite方言,android、jvm和ios上都支持sqlite驱动程序。

    sqlite常用sql语句

    sqlite常用sql语句,里面包含了例子中如返回UTC时间,返回本地时间,比较,分页显示等,并且注有提示。

    用传参数的方法实现Java对SQLite的添加和查询

    用传参数的方法实现Java对SQLite的添加和查询(不用拼接sql语句的方法,不用屏蔽单引号,工程包括sqlite-jdbc-3.27.2.1.jar)

    SQLite数据库常见的SQL语句

    SQLite数据库常见的SQL语句

    SQLite3源程序分析+文件存储结详细分析.rar

    SQLite3源程序分析+文件存储结详细分析.rar SQLite3源程序分析+文件存储结详细分析.rar SQLite3源程序分析+文件存储结详细分析.rar SQLite3源程序分析+文件存储结详细分析.rar SQLite3源程序分析+文件存储结详细分析...

    sqlite的SQL语句操作实例

    sqlite的SQL语句操作实例,主要增加、插入、删除、更改等等

    ios SQLite语句整理大全

    本文档详细说明了ios中所有关SQLite语句的使用以及各个各个方法分别代表或执行什么操作,并附有简单的代码例子便于理解。备注:部分简单的方法没有代码。

    SQLite数据库文件格式全面分析

    SQLite数据库文件格式全面分析 SQLite数据库文件格式全面分析 SQLite数据库文件格式全面分析 SQLite数据库文件格式全面分析 SQLite数据库文件格式全面分析 SQLite数据库文件格式全面分析

    SQLite的SQL语句高速缓存技术.pdf

    SQLite的SQL语句高速缓存技术.pdf

    SQLITE sql语句使用总结

    SQLITE DATABASE SQL COMMAND

    sqlite-create-table-parser:LL手写练习递归下降算法sqlte创建表语句解析器

    introduction LL handwriting practice recursive descent algorithm sqlite create table statement parser....练习手写LL递归下降算法的sqlite create table语句解析器。 详见博文 练手写了个SQLite解析器

    Sqlite3源码分析

    sqlite源码分析文档,sqlite源码分析文档,sqlite源码分析文档,sqlite源码分析文档,sqlite源码分析文档,sqlite源码分析文档,

    SQLite Truncate Table

    SQLite Truncate Table 在 SQLite 中,并没有 TRUNCATE TABLE 命令,但可以使用 SQLite 的 DELETE 命令从已有的表中删除全部的数据。 语法 DELETE 命令的基本语法如下: sqlite> DELETE FROM table_name; 但这种...

    sQlite常用语句以及sQlite developer的使用与注册

    前言 sQlite是开发中比较常用的轻量级...1、创建表语句 create table create table student( id integer primary key autoincrement, name varchar(20) not null, cid integer, age integer check(age >18 and a

    sqlite实现登录

    SQLite 是一个开源的嵌入式关系数据库,它可以减少应用程序管理数据的开销 , SQLite 可移植性好 、 很容易... 另外 , SQLite 在解 析REATE TABLE语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息。

    sqlite3.7.4分析不要下载

    sqlite3.7.4分析sqlite3.7.4分析sqlite3.7.4分析

    SQLite资料

    SQLite执行如下的语法 ALTER TABLE ANALYZE ATTACH DATABASE BEGIN TRANSACTION 注释 COMMIT TRANSACTION COPY CREATE INDEX CREATE TABLE CREATE TRIGGER CREATE VIEW DELETE DETACH DATABASE DROP INDEX DROP ...

Global site tag (gtag.js) - Google Analytics