自己动手编写一个VS插件(八)
2014-02-15 23:27
411 查看
作者:朱金灿
来源:http://blog.csdn.net/clever101
利用业余时间继续开发一个VS插件。我要开发的插件是一个代码库插件,主要是用于积累我平时要使用的代码。在之前我已经实现了选关键代码进行网上搜索,如下图:
![](http://img.blog.csdn.net/20140215232355609?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2xldmVyMTAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20140215232423328?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2xldmVyMTAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
今天继续开发两个新功能:本地代码入库和本地代码搜索。既然是代码库,就需要有数据库。我选择存放代码的数据库是sqlite。选择的理由是sqllite是开源的,基于文件的轻便型的,效率上也满足我的需求。数据库表的设计如下:
CodeRecord ( 代码记录表 )
Tag ( Tag表)
CodeRecord_Tag表(代码记录表和tag表的关联表)
File表(文件表)
File_Tag表
这个表是以前设计的。今天发现主键用int型并不合适,因为以后难免会出现多个代码库,到时一定需要将多个代码库进行合并,用int作主键就很难合并了,因此决定用com的guid作为主键,到时只要主键不同就可以认为是两条不同的纪录。
另外sqlite只支持多字节字符集,从网上找了个一个SQLite的C++类,同时支持ANSI 和UNICODE编码:
SQLite C++操作类
代码可以用,只是有个地方需要改动下,将
来源:http://blog.csdn.net/clever101
利用业余时间继续开发一个VS插件。我要开发的插件是一个代码库插件,主要是用于积累我平时要使用的代码。在之前我已经实现了选关键代码进行网上搜索,如下图:
今天继续开发两个新功能:本地代码入库和本地代码搜索。既然是代码库,就需要有数据库。我选择存放代码的数据库是sqlite。选择的理由是sqllite是开源的,基于文件的轻便型的,效率上也满足我的需求。数据库表的设计如下:
CodeRecord ( 代码记录表 )
字段名 | 数据类型 | 是否主键 | 是否非空 | 备注 |
ID | int | 是 | 否 | |
CodeText | BLOB_TEXT | 否 | 否 | 代码文本 |
DevLanguage | smallint | 否 | 开发语言 | |
DevEnv | smallint | 否 | 开发环境 | |
CodeClass | smallint | 否 | 代码类别 | |
EnterTime | 入库时间 |
字段名 | 数据类型 | 是否主键 | 是否非空 | 备注 |
ID | int | 是 | 否 | |
TagWord | char(64) | 否 | 否 | 标签 |
字段名 | 数据类型 | 是否主键 | 是否非空 | 备注 |
CodeRecord_ID | int | 否 | 否 | |
Tag_ID | int | 否 | 否 |
字段名 | 数据类型 | 是否主键 | 是否非空 | 备注 |
ID | int | 是 | 是 | |
FilePath | char(256) | 否 | 是 | 文件路径 |
ProjectPath | char(256) | 否 | 工程路径 | |
Screenshot | char(256) | 否 | 软件截图 | |
EnterTime | 入库时间 |
字段名 | 数据类型 | 是否主键 | 是否非空 | 备注 |
File_ID | int | 否 | 是 | |
Tag_ID | int | 否 | 是 |
另外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);
相关文章推荐
- vs2005如何使用用户自定义宏(User Macros)
- VisualStudio 2010 UI完全自动化测试实践
- 备忘录模式(Memento Pattern)
- 解决Win8.1系统LYNC共享PPT提示“演示文稿遇到问题”
- 解决Win8.1系统LYNC共享PPT提示“演示文稿遇到问题”
- VC项目配置基础 (VC6.0 和VC2005)
- POJ 1985 Cow Marathon 树的直径
- iOS 开发中为什么更新UI都要放在主线程中?
- 这周结束了
- 心语
- 【CTSC 2008】 网络管理 --树链剖分+树状数组+Trie树
- VisualStudio 2010 UI完全自动化测试实践
- 软件工程配置规范(VC2005) 第二版
- JVM学习笔记(1)
- Mysql编译安装参数说明
- hdu3826(素数的应用——判断某个数的因子是否含有整数的平方数)
- XML内容中有单引号和双引号的解决
- Google账户二次验证取消
- SICP 习题 (1.25) 解题总结
- lubuntu 使用USB摄像头