Quzrtz.net-sqlite 数据库持久化配置

Quzrtz.net-sqlite 数据库持久化配置

官方配置持久化资料:http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/job-stores.html

持久化建库脚本位置:在下载的 quartz 源码 database/dbtables/tables_sqlite.sql 位置,使用 sqliteStudio 工具执行就行了


1.下载源码(我下载的是 2.3.3.0 版本)


2.打开项目,找到 dbproviders.properties 文件 ,该文件是个嵌入资源
位置:Quartz\Impl\AdoJobStore\Common\dbproviders.properties


3.发现 quartz 2.3.3.0 支持 System.Data.sqlite.dll(1.0.88.0) 的驱动


4.查看自己的引用的(System.Data.sqlite.dll)是 1.0.102.0 版本,所以需要新加一个驱动描述。如下:

# sqlite3.0  provider
quartz.dbprovider.sqlite-10102.assemblyName=System.Data.sqlite,Version=1.0.102.0,Culture=neutral,PublicKeyToken=db937bc2d44ff139
quartz.dbprovider.sqlite-10102.connectionType=System.Data.sqlite.sqliteConnection,System.Data.sqlite,PublicKeyToken=db937bc2d44ff139
quartz.dbprovider.sqlite-10102.commandType=System.Data.sqlite.sqliteCommand,PublicKeyToken=db937bc2d44ff139
quartz.dbprovider.sqlite-10102.parameterType=System.Data.sqlite.sqliteParameter,PublicKeyToken=db937bc2d44ff139
quartz.dbprovider.sqlite-10102.commandBuilderType=System.Data.sqlite.sqliteCommandBuilder,PublicKeyToken=db937bc2d44ff139
quartz.dbprovider.sqlite-10102.parameterDbType=System.Data.sqlite.TypeAffinity,PublicKeyToken=db937bc2d44ff139
quartz.dbprovider.sqlite-10102.parameterDbTypePropertyName=DbType
quartz.dbprovider.sqlite-10102.parameterNamePrefix=@
quartz.dbprovider.sqlite-10102.exceptionType=System.Data.sqlite.sqliteException,PublicKeyToken=db937bc2d44ff139
quartz.dbprovider.sqlite-10102.useParameterNamePrefixInParameterCollection=true
quartz.dbprovider.sqlite-10102.bindByName=true

5.编写一个函数在初始化 quartz 前调用
#region 数据库持久化job        
private static IScheduler _sched = null;
/// <summary>
/// 初始化数据库存储
/// </summary>
public void InitDbStore()
{
	//持久化配置参考
	//http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/job-stores.html
	//添加驱动类型
	//位置:\Quartz\Impl\AdoJobStore\Common\dbproviders.properties
	//1.首先创建一个作业调度池
	var properties = new NameValueCollection();
	//存储类型
	properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX,Quartz";
	//表明前缀
	properties["quartz.jobStore.tablePrefix"] = "QRTZ_";
	//驱动类型
	properties["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.StdAdoDelegate,Quartz";
	//数据源名称
	string dbname = "quartz_storage";
	string DbPath = Grass.Config.ConfigHelper.GetAppSettingsValue("quartz_storage"); //获取config中 quartz_storage 节点内容
	//数据源名称
	properties["quartz.jobStore.dataSource"] = dbname;
	//拼接连接属性名称
	string conPropertieName = string.Format("quartz.dataSource.{0}.connectionString",dbname);
	//连接字符串
	properties[conPropertieName] = string.Format("Data Source={0};Pooling=true;FailIfMissing=false;Version=3;UTF8Encoding=True;Journal Mode=DELETE;",DbPath);
	//拼接驱动属性名称
	string proPropertieName = string.Format("quartz.dataSource.{0}.provider",dbname);
	properties[proPropertieName] = "sqlite-10102"; //新加的驱动名称
	//Configuring AdoJobStore to use strings as JobDataMap values (recommended)
	properties["quartz.jobStore.useProperties"] = "true";

	ISchedulerFactory sf = new StdSchedulerFactory(properties);
	_sched = sf.GetScheduler();
}
#endregion
6.配置config appsettings <add key="quartz_storage" value="E:\sqliteDb\quartz_storage.db"/>

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能