摘要: 在上一篇Sql Server参数化查询之where in和like实现详解中介绍了在Sql Server使用参数化查询where in的几种实现方案,遗漏了xml和表值参数,这里做一个补充 文章导读 方案5使用xml参数 方案6 使用表值参数TVP 6种实现方案总结 方案5 使用xml参数 对sql server xml类型参数不熟悉的童鞋需要先了解下XQuery概念,这里简单提下XQuery 是用来从 XML 文档查找和提取元素及属性的语言,简单说就是用于查询xml的语言说到这就会牵着到XPath,其实XPath是XQuery的一个子集,XQuery 1.0 和 XPath 2.0 共享相同的数据模型,并支持相同的函数和运算符,XPath的方法均适用于XQuery,假如您已经学习了 XPath,那么学习 XQuery 也不会有问题。详见http://www.w3school.com.cn/xquery/xquery_intro.asp XQuery概念了解后需要进一步了解下Sql Server对xml的支持函数,主要为query() 阅读全文
posted @ 2012-04-29 09:59 懒惰的肥兔 阅读(11334) 评论(6) 推荐(10) 编辑
摘要: 身为一名小小的程序猿,在日常开发中不可以避免的要和where in和like打交道,在大多数情况下我们传的参数不多简单做下单引号、敏感字符转义之后就直接拼进了SQL,执行查询,搞定。若有一天你不可避免的需要提高SQL的查询性能,需要一次性where in 几百、上千、甚至上万条数据时,参数化查询将是必然进行的选择。然而如何实现where in和like的参数化查询,是个让不少人头疼的问题。下面详细讲解下如何更好的实现where in查询 阅读全文
posted @ 2012-04-22 19:41 懒惰的肥兔 阅读(79772) 评论(44) 推荐(64) 编辑
摘要: 说来惭愧,工作差不多4年了,直到前些日子被DBA找上门让我优化一个CPU占用很高的复杂SQL语句时,我才突然意识到了参数化查询的重要性。 相信有很多开发者和我一样对于参数化查询认识比较模糊,没有引起足够的重视 错误认识1.不需要防止sql注入的地方无需参数化   参数化查询就是为了防止SQL注入用的,其它还有什么用途不知道、也不关心,原则上是能不用参数就不用参数,为啥?多麻烦,我只是做公司内部系统不用担心SQL注入风险,使用参数化查询不是给自己找麻烦,简简单单拼SQL,万事OK 错误认识2.参数化查询时是否指定参数类型、参数长度没什么区别   以前也一直都觉的加与不加参数长度应该没有什么区别,仅是写法上的不同而已,才明白其实两者不一样的,为了提高sql执行速度,请为SqlParameter参数加上SqlDbType和size属性,在参数化查询代码编写过程中很多开发者忽略了指定查询参数的类型,这将导致托管代码在执行过程中不能自动识别参数类型,进而对该字段内容进行全表扫描以确定参数类型并进行转换,消耗了不必要的查询性能所致。根据MSDN解释:如果未在size参数中显式 阅读全文
posted @ 2012-04-21 08:07 懒惰的肥兔 阅读(40245) 评论(83) 推荐(108) 编辑
摘要: string str1 =Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名。string str2=Environment.CurrentDirectory;//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。//备注 按照定义,如果该进程在本地或网络驱动器的根目录中启动,则此属性的值为驱动器名称后跟一个尾部反斜杠(如“C:\”)。如果该进程在子目录中启动,则此属性的值为不带尾部反斜杠的驱动器和子目录路径(如“C:\mySubDirectory”)。string str3=Directory.GetC 阅读全文
posted @ 2012-04-17 06:17 懒惰的肥兔 阅读(17358) 评论(2) 推荐(4) 编辑
摘要: 本文主要用实例代码演示如何创建自己的Quartz.Net 2.0 Windwos服务,并使用配置文件实现任务调度,配有完整的源码展示和下载 阅读全文
posted @ 2012-04-15 09:35 懒惰的肥兔 阅读(28823) 评论(81) 推荐(56) 编辑
摘要: Quartz的cron表达式 按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(0~11) 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 7.年份(1970-2099) 其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?. 阅读全文
posted @ 2012-04-14 22:20 懒惰的肥兔 阅读(15293) 评论(5) 推荐(12) 编辑
摘要: Quartz.NET 2.0 可以很方便的通过配置的xml文件方式实现灵活的任务调度配置(1.0版本就已经支持了,只是配置文件格式有些变化) 默认的quartz任务配置文件为quartz_jobs.xml,在quartz服务的根目录下,可以通过quartz.config中quartz.plugin.xml.fileNames = ~/quartz_jobs.xml进行设置 quartz_jobs.xml配置节点介绍 job-scheduling-data 为跟节点不再解释 processing-directives这个节点官方给的示例中就存在,干啥用的没有深入了解,保持默认配置即可 schedule任务调度集合可以配置多个但貌似只有第一个的配置起作用,如何让多个schedule同时起作用希望知道的童鞋告诉下,不胜感激。所有的job和trigger均放在这个节点下面 job 任务,其实就是1.x版本中的,这个节点是用来定义每个具体的任务的,多个任务请创建多个job节点即可 阅读全文
posted @ 2012-04-14 13:28 懒惰的肥兔 阅读(26405) 评论(11) 推荐(18) 编辑
摘要: Quartz.NET 2.0 2012年4月9日发布了Released http://quartznet.sourceforge.net/ 日常开发来说,相对于1.0版,2.0版在使用上有以下几点需要注意的变化 变化一 比1.0多引用了C5.dll C5.dll 一个C#和其他CLI语言的泛型集合类。.Net2.0及以上才可以使用。简介地址:http://www.itu.dk/research/c5/ 变化二 quartz.config有细微变化 quartz.plugin.xml.type由1.x的Quartz.Plugin.Xml.JobInitializationPlugin, Quartz变为了2.0中的Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz 2.0版本新增了一行配置quartz.scheduler.exporter.channelName = httpQuart 阅读全文
posted @ 2012-04-14 00:49 懒惰的肥兔 阅读(10768) 评论(2) 推荐(12) 编辑
摘要: Quartz.NET是一个开源的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。   2012年4月9日 Quartz.NET 2.0发布了Released版,对应于Java Quartz的2.1版本,下载地址 http://quartznet.sourceforge.net/download.html 。整个版本相对于1.0版本进行了大量的修改,单元测试的代码更友好(重构了更多的接口),API是基于泛型和.NET 3.5 SP1之后的特性,例如DateTimeOffset。这是Quartz.NET 有史以来最大的、最值得兴奋的一个版本。 阅读全文
posted @ 2012-04-13 21:53 懒惰的肥兔 阅读(12697) 评论(1) 推荐(15) 编辑
摘要: 1、概述log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是介绍如何在Visual Studio2008中使用log4net快速创建系统日志,如何扩展以输出自定义字段。2、一个简单的使用实例第一步:在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0。第二步:程序启动时读取log4net的配置文件。如果是CS程序,在根目录的Program.cs中的Main方法中添加:log4net.Config.XmlConfigurator.Configure();如果是BS 阅读全文
posted @ 2012-03-23 10:05 懒惰的肥兔 阅读(12626) 评论(4) 推荐(23) 编辑