自己动手编写一个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);
自己动手编写一个VS插件(八)的更多相关文章
- 自己动手编写一个VS插件(五)
作者:朱金灿 来源:http://blog.csdn.net/clever101 继续编写VisualStudio插件.这次我编写的插件叫DevAssist(意思是开发助手).在看了前面的文章之后你知 ...
- 自己动手编写一个Mybatis插件:Mybatis脱敏插件
1. 前言 在日常开发中,身份证号.手机号.卡号.客户号等个人信息都需要进行数据脱敏.否则容易造成个人隐私泄露,客户资料泄露,给不法分子可乘之机.但是数据脱敏不是把敏感信息隐藏起来,而是看起来像真的一 ...
- 自己动手编写一个VS插件(七)
作者:朱金灿 来源:http://blog.csdn.net/clever101 继续开发VS插件.今天在添加ATL控件时出现一个"未能返回新代码元素"的错误,如下图: 解决办法是 ...
- 自己动手编写一个VS插件(六)
作者:朱金灿 来源:http://blog.csdn.net/clever101 在上篇中我们已经实现了创建和显示一个工具栏出来,它的效果图是这样的: 现在我们实现一些简单功能,具体就是单击按钮弹出一 ...
- 如何自己编写一个easyui插件续
接着如何自己编写一个easyui插件继续分享一下如何从上一节写的“hello”插件继承出一个“hello2”. 参考了combobox的源码中继承combo,当然我这个简单很多了.都是根据自己的理解来 ...
- 如何编写一个gulp插件
很久以前,我们在"细说gulp"随笔中,以压缩JavaScript为例,详细地讲解了如何利用gulp来完成前端自动化. 再来短暂回顾下,当时除了借助gulp之外,我们还利用了第三方 ...
- 从零开始编写一个vue插件
title: 从零开始编写一个vue插件 toc: true date: 2018-12-17 10:54:29 categories: Web tags: vue mathjax 写毕设的时候需要一 ...
- 如何自己编写一个easyui插件
本文介绍如何通过参考1.4.2版本的progressbar的源码自己编写一个HelloWorld级别的easyui插件,以及如何拓展插件的功能. 有利于我们理解easyui插件的实现,以及了解如何对e ...
- 自己动手编写Maven的插件
Maven的插件机制是完全依赖Maven的生命周期的,因此理解生命周期至关重要.本文参考官方文档后使用archetype创建,手动创建太麻烦. 创建创建项目 选择maven-archetype-moj ...
随机推荐
- 全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL
全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL http://blog.s135.com/startssl/ 购买权威机构的证书一年大概得七八千元,其实这是不值得的,所以一直 ...
- LocationOnScreen-控件在手机屏幕中的位置坐标
我们可以通过如下的方法获得某个控件在屏幕中的绝对坐标 代码如下: private int[] mHistoryDisplayButtonLocation; private int mHistoryDi ...
- 妙味css3课程---1-1、css中自定义属性可以用属性选择器么
妙味css3课程---1-1.css中自定义属性可以用属性选择器么 一.总结 一句话总结:可以的. 1.如何实现用属性选择器实现a标签根据href里面含有的字段选择背景图片? p a[href*=te ...
- GO语言学习(十五)Go 语言指针
Go 语言指针 Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务. 接下来让我们来一步步学习 Go 语言指针. 我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地 ...
- CodeVs——T 3305 水果姐逛水果街Ⅱ
http://codevs.cn/problem/3305/ 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 De ...
- [D3] Debug D3 v4 with Dev Tools
Since D3 outputs standard markup, you can use familiar dev tools and inspectors to debug your visual ...
- DC针对pipeline的优化
set_optimize_register true compile -ultra 调整pipleline各级的组合逻辑,使得各级组合逻辑的延迟跟接近 对非pipeline进行优化: regi ...
- Eclipse 出错 Error:Could not create the Java Virtual Machine Error:A fatal exception has occurred
提示如下: scala compile server. error:could not create the java machine.Error: A fatal exception has occ ...
- VMware linux虚拟机在线识别新添加磁盘
登录进虚拟机linux系统中执行以下命令,识别新增加的硬盘 echo "- - -" > /sys/class/scsi_host/host0/scan # ls /sys/ ...
- 剪枝法观点下的旅行商问题(TSP)
1. 构建基本的穷举搜索骨架 int n; int dst[100][100]; int best; const int INF = 987654321; // 初始状态下,path 存入第一节点,v ...