微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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"/>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐