自己动手编写一个VS插件(八)
作者:朱金灿
来源: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编码:
代码可以用,只是有个地方需要改动下,将
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);
最新文章
- Caliburn.Micro学习笔记(一)----引导类和命名匹配规则
- python多线程之semaphore(信号量)
- 用C#抓取AJAX页面的内容
- iptables 开启80端口
- C# 通用上传文件类
- CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组
- 知识点整理之Java的Cookie操作
- jQuery.noConflict()防冲突机制
- 转化率最高的16个WordPress 电子商务主题
- C++ 多态性浅谈
- JList用法小结
- Redis 笔记
- Linux/hp unix/AIX日常巡检脚本(转)
- spring mvc 处理流程整理
- 如何延长IntelliJ IDEA的试用期?
- 树莓派.安装系统+Node.js+MongoDB系列环境
- R语言统计学习-1简介
- C++常用代码优化策略
- jq动画分析1
- 用zmq的pub/sub+flask实现异步通信的研究