最近要做一个基于gears的SQLite数据库设计器,本来SQLite支持
PRAGMA table_info(tablename)
这样的语法,来获得表结构的信息,可以方便的
提取
表结构.
可是gears为了安全起见,禁用了 PRAGMA 语法.这造成要写代码分析SQLite的CREATE TABLE语句,提取tableinfo.
可是要写一个SQL语法分析器,对我目前的水平来说还达不到.怎么办?
我用了一个偷懒的方法,就是简化字段设计.
我把字段设计简化成下面的结构
- name:字段名
- type:类型,比如INTEGER,VARCHAR,DATE等
- length:长度,如果有长度的话直接写成(10)或者(8,2)这样带括号的形式
- constraint:约束,也就是常用的 column-constraint 的组合,比如
""
NOT NULL
UNIQUE NOT NULL
PRIMARY KEY AUTOINCREMENT NOT NULL
PRIMARY KEY UNIQUE NOT NULL
- 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语法分析器的时候还是可以抵挡一下的.
分享到:
相关推荐
SQLite SQL 语句使用...在本文中,我们介绍了 SQLite 的基本概念和结构定义,包括 CREATE TABLE、CREATE VIEW 和 CREATE TRIGGER 语句的使用。掌握这些命令可以帮助您更好地使用 SQLite,提高数据库设计和开发效率。
android中 sqlite数据库操作中常用的SQL 语句,留下备用,防止出错
iOS SQLite语句整理大全 本文档详细说明了iOS中所有关SQLite语句的使用以及各个方法分别代表或执行什么操作,并附有简单的代码例子便于理解。 iOS中SQLite的使用 iOS中可以通过sqlite3来访问iPhone本地的数据库。...
在SQLite中,创建数据库非常简单,只需通过`CREATE DATABASE`语句。例如,创建一个名为mydb的数据库: ```sql CREATE DATABASE mydb; ``` 接着,我们创建表。比如,创建一个名为students的表,包含id(学生ID)、...
4. SQL 语句:如果你选择使用 TSQLDataset 或 TQuery 组件,可以通过编写 SQL(Structured Query Language)语句来创建表,比如 "CREATE TABLE TableName (FieldName DataType, ...)"。 5. 界面设计:Delphi 提供的...
ASqlite3Table := TASqlite3Table.Create(Self); try ASqlite3Table.DatabaseName := 'C:\mydatabase.db'; ASqlite3Table.TableName := 'MyTable'; ASqlite3Table.Connection := ASqlite3Connection1; // 使用...
sqldelight从sql语句生成类型安全api。它编译时验证您的模式、语句和迁移,并提供IDE功能,如自动完成和重构,使编写和维护SQL变得简单。sqldelight目前支持sqlite方言,android、jvm和ios上都支持sqlite驱动程序。
SQLite数据库常见的SQL语句
本文将深入讲解如何使用SQL语句来操作SQLite数据库,以实现对Android应用数据的有效管理。 首先,我们需要在Android项目中创建SQLite数据库。这通常通过继承`SQLiteOpenHelper`类来完成。`SQLiteOpenHelper`提供了...
CREATE TABLE 学生信息 ( ID INTEGER PRIMARY KEY, 姓名 TEXT NOT NULL, 年龄 INTEGER, 性别 TEXT CHECK (性别 IN ('男', '女')), 专业 TEXT ); ``` 现在我们了解了基本的数据库结构,接下来将介绍如何进行...
SQLite3源程序分析+文件存储结详细分析.rar SQLite3源程序分析+文件存储结详细分析.rar SQLite3源程序分析+文件存储结详细分析.rar SQLite3源程序分析+文件存储结详细分析.rar SQLite3源程序分析+文件存储结详细分析...
2. 表的创建:通过CREATE TABLE语句定义表结构,包括字段名、数据类型、约束等。 3. 插入数据:INSERT INTO语句用于向表中添加数据。 4. 查询数据:SELECT语句是最常用的SQL语句,用于从表中检索数据。可以结合WHERE...
4. 缓存应用:除了SQLite自身的SQL语句缓存外,开发者还可以在应用层面实现缓存机制,例如使用内存缓存减少对数据库的直接访问。 总的来说,SQLite作为一款轻量级的数据库管理系统,在资源受限的嵌入式设备中扮演着...
3. 执行 SQL 语句:在命令行中输入 SQL 语句(如 CREATE TABLE、INSERT INTO、SELECT 等)来操作数据库。例如,`CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT);` 可创建一个名为 "students" 的表。 4....
在 Sql 中,我们使用 `CREATE DATABASE` 语句来创建新的数据库,而在 Sqlite 中,这一步通常通过运行特定的程序或代码完成,如在 Python 中使用 `sqlite3.connect()`。连接数据库则使用 `$conn = sqlite3.connect('...
在SQLite中创建表可以通过CREATE TABLE语句实现。例如,创建一个名为person的表,该表包含id(整型、主键)、name(字符串型,不允许为空)、age(整型)、address(字符串型)、weight(浮点型,保留四位小数,其中...
`SQLite3.pas`通常包含了对SQLite3 API的封装,使得Delphi程序员可以方便地在Delphi程序中调用SQLite3的功能,如创建数据库、执行SQL语句、管理事务等。这个单元通常会定义一系列的函数和过程,如`SQLite3Open`...
CREATE TABLE语句用于定义表格结构,而ALTER TABLE则用于修改现有表格。INDEX语句用于提升查询性能,而TRUNCATE TABLE和DROP TABLE分别用于清空和删除表格。 SQLite提供了视图(View)功能,可以将复杂的查询结果...
SQLite提供了CREATE DATABASE、CREATE TABLE等用于创建数据库和表的命令,以及ALTER TABLE用于修改表结构,DROP DATABASE和DROP TABLE用于删除数据库和表。此外,还可以使用INDEX创建索引以优化查询性能。 六、...
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...