GoAhead2.5源代码分析之2-文件数据库(emfdb.c)
2016-05-19 10:37
211 查看
Emfdb.c(文件数据库)
数据库按照下面结构体存放
typedef struct dbTable_s {
char_t *name;
int nColumns;
char_t **columnNames;
int *columnTypes;
int nRows;
int **rows;
} dbTable_t;
每个table对应上面结构的一个变量。
Name是table的名字
nColumns是table有多少列
columnNames是各个列的名字
columnTypes是各个列中内容的类型,是字符串,还是整数
nRows是table有多少行
rows是:rows
int dbRegisterDBSchema(dbTable_t *pTableRegister)
功能:创建一个table框架
功能: 一些初始化
功能: 释放tables所在的内存
功能: 清空tables中的所有数据,释放内存。
功能:根据表单名字、列名、列值,找到对应的row
功能:向名字为tablename中添加一row
功能: 删除名字为tablename的table的一row
功能: 添加row,使其行数为nNewRows
功能: 获得这个table的行数
功能:读取指定行、列的值,读取的值是整数值
功能: 读取指定行、列的值,读取的值是字符串
功能: 向指定行、列写整数
功能: 向指定行列写字符串
功能: 向文件中些key=value
功能:将数据库(动态分配的内存)中值存放到文件中
功能: 获得key=value字符串中的key和value
功能: 将文件中的数据存到数据库中
功能: 获取table的id
功能: 获取table的名字
功能: 去掉字符串中的空格
功能: 获得指定名字的列的索引
功能: 设置数据库文件的路径
功能: 获得数据库文件的路径
数据库按照下面结构体存放
typedef struct dbTable_s {
char_t *name;
int nColumns;
char_t **columnNames;
int *columnTypes;
int nRows;
int **rows;
} dbTable_t;
每个table对应上面结构的一个变量。
Name是table的名字
nColumns是table有多少列
columnNames是各个列的名字
columnTypes是各个列中内容的类型,是字符串,还是整数
nRows是table有多少行
rows是:rows
指向各个行的指针,rows
[m]是该行某个列整数的值或字符串的指针。
int dbRegisterDBSchema(dbTable_t *pTableRegister)功能:创建一个table框架
说明:
int dbOpen(char_t *tablename, char_t *filename, int (*gettime)(int did), int flags)功能: 一些初始化
说明:
void dbClose(int did)功能: 释放tables所在的内存
说明:
void dbZero(int did)功能: 清空tables中的所有数据,释放内存。
说明:
int dbSearchStr(int did, char_t *tablename, char_t *colName, char_t *value, int flags)功能:根据表单名字、列名、列值,找到对应的row
说明:
int dbAddRow(int did, char_t *tablename)功能:向名字为tablename中添加一row
说明:
int dbDeleteRow(int did, char_t *tablename, int row)功能: 删除名字为tablename的table的一row
说明:
int dbSetTableNrow(int did, char_t *tablename, int nNewRows)功能: 添加row,使其行数为nNewRows
说明:
int dbGetTableNrow(int did, char_t *tablename)功能: 获得这个table的行数
说明:
int dbReadInt(int did, char_t *table, char_t *column, int row, int *returnValue)功能:读取指定行、列的值,读取的值是整数值
说明:
int dbReadStr(int did, char_t *table, char_t *column, int row, char_t **returnValue)功能: 读取指定行、列的值,读取的值是字符串
说明:
int dbWriteInt(int did, char_t *table, char_t *column, int row, int iData)功能: 向指定行、列写整数
说明:
int dbWriteStr(int did, char_t *table, char_t *column, int row, char_t *s)功能: 向指定行列写字符串
说明:
static int dbWriteKeyValue(int fd, char_t *key, char_t *value)功能: 向文件中些key=value
说明:
int dbSave(int did, char_t *filename, int flags)功能:将数据库(动态分配的内存)中值存放到文件中
说明:
static int crack(char_t *buf, char_t **key, char_t **val)功能: 获得key=value字符串中的key和value
说明:
int dbLoad(int did, char_t *filename, int flags)功能: 将文件中的数据存到数据库中
说明:
int dbGetTableId(int did, char_t *tablename)功能: 获取table的id
说明:
char_t *dbGetTableName(int did, int tid)功能: 获取table的名字
说明:
static char_t *trim(char_t *str)功能: 去掉字符串中的空格
说明:
static int GetColumnIndex(int tid, char_t *colName)功能: 获得指定名字的列的索引
说明:
void basicSetProductDir(char_t *proddir)功能: 设置数据库文件的路径
说明:
char_t *basicGetProductDir()功能: 获得数据库文件的路径
说明:
相关文章推荐
- Redis异常JedisConnectionException:Read timed out解决笔记
- mysql 主从同步故障解决 Error 'Row size too large (> 8126).
- Mysql主从配置,实现读写分离
- oracle(行转列)中有关case和decode的用法及比较
- oracle的clob字段不为空的判断
- 让MySql支持Emoji表情存储
- Sql 序列
- mariadb配置允许远程访问方式
- Oracle中select使用别名
- 查询、删除Oracle中用户信息
- oracle中的null
- jsp向数据库传递中文参数(变量)乱码问题的解决:
- plsql客户端连接远程和本地数据库
- Oracle中dual虚拟表的用途
- 缓存与db一致性问题
- 1、安装Lync Server 2013前的准备工作
- SQL Server中Rowcount与@@Rowcount的用法 和set nocount on 也会更新@@Rowcount
- Oracle的内存数据库战略
- 安装了 R2 Integration Servic 之后,SQL Server 2008 Management Studio报错
- 数据库之SQLite增删改查