作者:朱金灿

来源: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, int n_column, char **column_value, char **column_name);

最新文章

  1. Caliburn.Micro学习笔记(一)----引导类和命名匹配规则
  2. python多线程之semaphore(信号量)
  3. 用C#抓取AJAX页面的内容
  4. iptables 开启80端口
  5. C# 通用上传文件类
  6. CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组
  7. 知识点整理之Java的Cookie操作
  8. jQuery.noConflict()防冲突机制
  9. 转化率最高的16个WordPress 电子商务主题
  10. C++ 多态性浅谈
  11. JList用法小结
  12. Redis 笔记
  13. Linux/hp unix/AIX日常巡检脚本(转)
  14. spring mvc 处理流程整理
  15. 如何延长IntelliJ IDEA的试用期?
  16. 树莓派.安装系统+Node.js+MongoDB系列环境
  17. R语言统计学习-1简介
  18. C++常用代码优化策略
  19. jq动画分析1
  20. 用zmq的pub/sub+flask实现异步通信的研究

热门文章

  1. PMP杂谈--名词解释
  2. 15.lambda表达式
  3. loadrunner11 +Win7 + 支持ie9,录制成功
  4. maven 详细描述
  5. 洛谷 P1205 [USACO1.2]方块转换 Transformations
  6. ajax的post请求与编码
  7. 为什么要学习Numerical Analysis
  8. 读文件头数据判断 PE 文件格式和类型
  9. Python中的Sets数据结构
  10. Redis学习笔记(六)---List