作者:朱金灿
来源:http://blog.csdn.net/clever101
利用业余时间继续开发一个VS插件。我要开发的插件是一个代码库插件,主要是用于积累我平时要使用的代码。在之前我已经实现了选关键代码进行网上搜索,如下图:
今天继续开发两个新功能:本地代码入库和本地代码搜索。既然是代码库,就需要有数据库。我选择存放代码的数据库是sqlite。选择的理由是sqllite是开源的,基于文件的轻便型的,效率上也满足我的需求。数据库表的设计如下:
CodeRecord ( 代码记录表 )
|
字段名
数据类型
是否主键
是否非空
备注
ID
int
是
否
CodeText
BLOB_TEXT
否
否
代码文本
DevLanguage
smallint
否
开发语言
DevEnv
smallint
否
开发环境
CodeClass
smallint
否
代码类别
EnterTime
入库时间
Tag ( Tag表)
字段名
数据类型
是否主键
是否非空
备注
ID
int
是
否
TagWord
char(64)
否
否
标签
CodeRecord_Tag表(代码记录表和tag表的关联表)
字段名
数据类型
是否主键
是否非空
备注
CodeRecord_ID
int
否
否
Tag_ID
int
否
否
File表(文件表)
字段名
数据类型
是否主键
是否非空
备注
ID
int
是
是
FilePath
char(256)
否
是
文件路径
ProjectPath
char(256)
否
工程路径
Screenshot
char(256)
否
软件截图
EnterTime
入库时间
File_Tag表
字段名
数据类型
是否主键
是否非空
备注
File_ID
int
否
是
Tag_ID
int
否
是
这个表是以前设计的。今天发现主键用int型并不合适,因为以后难免会出现多个代码库,到时一定需要将多个代码库进行合并,用int作主键就很难合并了,因此决定用com的guid作为主键,到时只要主键不同就可以认为是两条不同的纪录。
另外sqlite只支持多字节字符集,从网上找了个一个SQLite的C++类,同时支持ANSI 和UNICODE编码:
SQLite C++操作类
代码可以用,只是有个地方需要改动下,将
typedef int (WINAPI *QueryCallback) (void *para,int n_column,char **column_value,char **column_name);
改为
typedef int (__cdecl *QueryCallback) (void *para,char **column_name);
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!