`
achun
  • 浏览: 311845 次
  • 性别: 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
分享到:
评论

相关推荐

    SQLITE sql语句使用总结

    SQLite SQL 语句使用...在本文中,我们介绍了 SQLite 的基本概念和结构定义,包括 CREATE TABLE、CREATE VIEW 和 CREATE TRIGGER 语句的使用。掌握这些命令可以帮助您更好地使用 SQLite,提高数据库设计和开发效率。

    android sqlite常用操作语句

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

    ios SQLite语句整理大全

    iOS SQLite语句整理大全 本文档详细说明了iOS中所有关SQLite语句的使用以及各个方法分别代表或执行什么操作,并附有简单的代码例子便于理解。 iOS中SQLite的使用 iOS中可以通过sqlite3来访问iPhone本地的数据库。...

    数据库sqlite语句

    在SQLite中,创建数据库非常简单,只需通过`CREATE DATABASE`语句。例如,创建一个名为mydb的数据库: ```sql CREATE DATABASE mydb; ``` 接着,我们创建表。比如,创建一个名为students的表,包含id(学生ID)、...

    Create_table.zip_Create_Table_delphi create table

    4. SQL 语句:如果你选择使用 TSQLDataset 或 TQuery 组件,可以通过编写 SQL(Structured Query Language)语句来创建表,比如 "CREATE TABLE TableName (FieldName DataType, ...)"。 5. 界面设计:Delphi 提供的...

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

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

    SQLite数据库常见的SQL语句

    SQLite数据库常见的SQL语句

    使用SQL语句操作SQLite数据库

    本文将深入讲解如何使用SQL语句来操作SQLite数据库,以实现对Android应用数据的有效管理。 首先,我们需要在Android项目中创建SQLite数据库。这通常通过继承`SQLiteOpenHelper`类来完成。`SQLiteOpenHelper`提供了...

    sqlite的SQL语句操作实例

    CREATE TABLE 学生信息 ( ID INTEGER PRIMARY KEY, 姓名 TEXT NOT NULL, 年龄 INTEGER, 性别 TEXT CHECK (性别 IN ('男', '女')), 专业 TEXT ); ``` 现在我们了解了基本的数据库结构,接下来将介绍如何进行...

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

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

    SQL语句、命令、sqlite合集

    2. 表的创建:通过CREATE TABLE语句定义表结构,包括字段名、数据类型、约束等。 3. 插入数据:INSERT INTO语句用于向表中添加数据。 4. 查询数据:SELECT语句是最常用的SQL语句,用于从表中检索数据。可以结合WHERE...

    Delphi使用ASqlite3 连接SQLite上例子

    ASqlite3Table := TASqlite3Table.Create(Self); try ASqlite3Table.DatabaseName := 'C:\mydatabase.db'; ASqlite3Table.TableName := 'MyTable'; ASqlite3Table.Connection := ASqlite3Connection1; // 使用...

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

    4. 缓存应用:除了SQLite自身的SQL语句缓存外,开发者还可以在应用层面实现缓存机制,例如使用内存缓存减少对数据库的直接访问。 总的来说,SQLite作为一款轻量级的数据库管理系统,在资源受限的嵌入式设备中扮演着...

    sqlite3.exe

    3. 执行 SQL 语句:在命令行中输入 SQL 语句(如 CREATE TABLE、INSERT INTO、SELECT 等)来操作数据库。例如,`CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT);` 可创建一个名为 "students" 的表。 4....

    实用Sql + Sqlite语句 语法

    在 Sql 中,我们使用 `CREATE DATABASE` 语句来创建新的数据库,而在 Sqlite 中,这一步通常通过运行特定的程序或代码完成,如在 Python 中使用 `sqlite3.connect()`。连接数据库则使用 `$conn = sqlite3.connect('...

    SQL语句基础(Sqlite).pdf

    在SQLite中创建表可以通过CREATE TABLE语句实现。例如,创建一个名为person的表,该表包含id(整型、主键)、name(字符串型,不允许为空)、age(整型)、address(字符串型)、weight(浮点型,保留四位小数,其中...

    SQLite3代码

    `SQLite3.pas`通常包含了对SQLite3 API的封装,使得Delphi程序员可以方便地在Delphi程序中调用SQLite3的功能,如创建数据库、执行SQL语句、管理事务等。这个单元通常会定义一系列的函数和过程,如`SQLite3Open`...

    SQLite原生分析(完整)

    CREATE TABLE语句用于定义表格结构,而ALTER TABLE则用于修改现有表格。INDEX语句用于提升查询性能,而TRUNCATE TABLE和DROP TABLE分别用于清空和删除表格。 SQLite提供了视图(View)功能,可以将复杂的查询结果...

    SQLite数据库分析及实例

    SQLite提供了CREATE DATABASE、CREATE TABLE等用于创建数据库和表的命令,以及ALTER TABLE用于修改表结构,DROP DATABASE和DROP TABLE用于删除数据库和表。此外,还可以使用INDEX创建索引以优化查询性能。 六、...

    sqlite3命令行使用说明

    sqlite> create table tbl1(one varchar(10), two smallint); sqlite> insert into tbl1 values('hello!', 10); sqlite> insert into tbl1 values('goodbye', 20); sqlite> select * from tbl1; hello! | 10 goodbye...

Global site tag (gtag.js) - Google Analytics