<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zdhlwt2008的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/zdhlwt2008</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; zdhlwt2008]]></copyright><item><title><![CDATA[SQL Server参数化SQL语句中的like和in查询的语法(C#)]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/123862238</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/123862238</guid><author>zdhlwt2008</author><pubDate>Thu, 31 Mar 2022 08:34:22 +0800</pubDate><description><![CDATA[sql语句进行 like和in 参数化，按照正常的方式是无法实现的
//SqlParameter 会把where insert delete等字符原样的插入写入查询到sql语句中，而不会让这些关键字产生效果。。。。。。

我们一般的思维是：

Like参数化查询：
string sqlstmt = "select * from users where user_name like '%@word%' or mobile like '%@word%'";
SqlParameter[] Parameters=.]]></description><category></category></item><item><title><![CDATA[C# System.Speech.dll 实现语音播报无需联网]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/122476188</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/122476188</guid><author>zdhlwt2008</author><pubDate>Thu, 13 Jan 2022 16:08:34 +0800</pubDate><description><![CDATA[SpeechSynthesizer synthesizer = new SpeechSynthesizer();
            synthesizer.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Adult); // to change VoiceGender and VoiceAge check out those links below
            synthesizer.Volume = 100;  // (0 - 100...]]></description><category></category></item><item><title><![CDATA[jquery ajax向spring mvc controller中传值并接受及解析返回值]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/116779075</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/116779075</guid><author>zdhlwt2008</author><pubDate>Fri, 14 May 2021 09:32:48 +0800</pubDate><description><![CDATA[首先要导入Jackson的Jar包、依赖，用于控制器数据转换。


 &lt;!-- Jackson Json处理工具包 --&gt;
 &lt;dependency&gt;
  &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt;
  &lt;artifactId&gt;jackson-databind&lt;/artifactId&gt;
  &lt;version&gt;2.4.2&lt;/v...]]></description><category></category></item><item><title><![CDATA[C# RSA加密算法PEM格式转换XML]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/108051845</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/108051845</guid><author>zdhlwt2008</author><pubDate>Mon, 17 Aug 2020 17:31:44 +0800</pubDate><description><![CDATA[c#　rsa加密需要xml公钥 如何将pem格式转换成xml (c# rsa只支持XML格式的)

RSA PEM格式(蓝色部分是公钥=publicKey)：

-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUABgQD5MIb5ZQhNGhsUjfFbn7y6nY6tsqV9LcC2s/rLpu9sz8CplsTy2SuTG0o7y9ICXW6oRUC9bVxI8TfTK4bbSrNQ6UoExzQFdbc3pEGun3iCy+inBhIC6xf5Z7..]]></description><category></category></item><item><title><![CDATA[c# linq join，GroupJoin使用]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/107967517</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/107967517</guid><author>zdhlwt2008</author><pubDate>Wed, 12 Aug 2020 21:59:08 +0800</pubDate><description><![CDATA[List&lt;person&gt; pp = new List&lt;person&gt;() {
        new person() { age=11,isread=true,name="1isi"},
        new person() { age=21,isread=true,name="2isi"},
        new person() { age=31,isread=true,name="3isi"},
      ...]]></description><category></category></item><item><title><![CDATA[C# Lamda 表达式 GroupBy实现数据统计分组]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/106156317</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/106156317</guid><author>zdhlwt2008</author><pubDate>Sat, 16 May 2020 11:17:40 +0800</pubDate><description><![CDATA[List&lt;scoreruleA&gt; list = new List&lt;scoreruleA&gt;()
      {
        new scoreruleA() {id=1,scoreitem="语文",score=92 },
        new scoreruleA() {id=1,scoreitem="语文",score=90 },
        new scoreruleA() {id=2,scoreitem...]]></description><category></category></item><item><title><![CDATA[深入理解 C# 协变和逆变]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/100070754</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/100070754</guid><author>zdhlwt2008</author><pubDate>Mon, 26 Aug 2019 09:11:41 +0800</pubDate><description><![CDATA[msdn解释如下：

“协变”是指能够使用与原始指定的派生类型相比，派生程度更大的类型。

“逆变”则是指能够使用派生程度更小的类型。

解释的很正确，大致就是这样，不过不够直白。

直白的理解：

“协变”-&gt;”和谐的变”-&gt;”很自然的变化”-&gt;string-&gt;object :协变。

“逆变”-&gt;”逆常的变”-&gt;”不正常的变化”-&gt;obj...]]></description><category></category></item><item><title><![CDATA[数据库知识点汇总]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/98168025</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/98168025</guid><author>zdhlwt2008</author><pubDate>Fri, 02 Aug 2019 08:27:33 +0800</pubDate><description><![CDATA[一、基本概念

1.主键、外键、超键、候选键


超键：在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键，多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。

候选键：是最小超键，即没有冗余元素的超键。

主键：数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键，且主键的取值不能缺失，即不能为空值（Null）。

外键：在...]]></description><category></category></item><item><title><![CDATA[C#使用读写锁三行代码简单解决多线程并发写入文件时线程同步的问题]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/80702605</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/80702605</guid><author>zdhlwt2008</author><pubDate>Fri, 15 Jun 2018 11:12:18 +0800</pubDate><description><![CDATA[在开发程序的过程中，难免少不了写入错误日志这个关键功能。实现这个功能，可以选择使用第三方日志插件，也可以选择使用数据库，还可以自己写个简单的方法把错误信息记录到日志文件。选择最后一种方法实现的时候，若对文件操作与线程同步不熟悉，问题就有可能出现了，因为同一个文件并不允许多个线程同时写入，否则会提示“文件正在由另一进程使用，因此该进程无法访问此文件”。 这是文件的并发写入问题，就需要用到线程同步。而...]]></description><category></category></item><item><title><![CDATA[.net MVC使用Session验证用户登录]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/79815309</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/79815309</guid><author>zdhlwt2008</author><pubDate>Wed, 04 Apr 2018 11:42:39 +0800</pubDate><description><![CDATA[用最简单的Session方式记录用户登录状态1.添加DefaultController控制器，重写OnActionExecuting方法，每次访问控制器前触发public class DefaultController : Controller
    {
        protected override void OnActionExecuting(ActionExecutingContex...]]></description><category></category></item><item><title><![CDATA[C#构造函数里的base和this的区别]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/78182242</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/78182242</guid><author>zdhlwt2008</author><pubDate>Mon, 09 Oct 2017 14:28:38 +0800</pubDate><description><![CDATA[实例一:
  父类的构造函数总是在子类之前执行的。既先初始化静态构造函数，后初始化子类构造函数。
public class BaseCircle {
        public BaseCircle()
        {
            Console.WriteLine(" no arguments base constructor!!!");
        }
       ]]></description><category></category></item><item><title><![CDATA[.NET Entity Framework(EF)使用SqlQuery直接操作SQL查询语句或者执行过程]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/77832858</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/77832858</guid><author>zdhlwt2008</author><pubDate>Mon, 04 Sep 2017 08:48:20 +0800</pubDate><description><![CDATA[Entity Framework是微软出品的高级ORM框架，大多数.NET开发者对这个ORM框架应该不会陌生。本文主要罗列在.NET(ASP.NET/WINFORM)应用程序开发中使用Entity Framework直接执行SQL语句或者存储过程的一些代码片段。具体请见以下正文：

1.使用SqlQuery在已知的实体上执行SQL查询语句
using (var context = new M]]></description><category></category></item><item><title><![CDATA[在c#中 RemoveAt、 Remove、delete用法区别]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/75573566</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/75573566</guid><author>zdhlwt2008</author><pubDate>Thu, 20 Jul 2017 18:44:18 +0800</pubDate><description><![CDATA[删除DataRow:有两种方法可以删除DataRow,分别是Delete方法和Remove方法和RemoveAt方法。

其区别是：

Delete方法实际上不是从DataTable中删除掉一行，而是将其标志为删除，仅仅是做个记号，

而Remove方法则是真正的从DataRow中删除一行，

RemoveAt方法是根本行的索引来删除。

列：DataRow dr=ds.Tab]]></description><category></category></item><item><title><![CDATA[未能加载文件或程序集“SrvCommon, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/75108413</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/75108413</guid><author>zdhlwt2008</author><pubDate>Fri, 14 Jul 2017 16:21:35 +0800</pubDate><description><![CDATA[在加载DLL时，出现了如下的异常：未能加载文件或程序集“SrvCommon, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null”或它的某一个依赖项。
试图加载格式不正确的程序。



根本原因为:SrvCommon.DLL文件是X86平台生成的。而你的winform程序是Anycpu平台。
解决方法:SrvCommon.DLL]]></description><category></category></item><item><title><![CDATA[EXCEL 操作详解精品]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/75046798</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/75046798</guid><author>zdhlwt2008</author><pubDate>Thu, 13 Jul 2017 11:23:31 +0800</pubDate><description><![CDATA[1.引入命名空间
using System.Reflection;
using Microsoft.Office.Interop.Excel;
using System.Diagnostics;
2.主体代码如下：
Microsoft.Office.Interop.Excel.Application myExcel = new Microsoft.Office.Interop.Excel.A]]></description><category></category></item><item><title><![CDATA[Linq中使用 外连接和右连接]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/73087207</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/73087207</guid><author>zdhlwt2008</author><pubDate>Mon, 12 Jun 2017 08:35:58 +0800</pubDate><description><![CDATA[use Test
Create table Student(
ID int identity(1,1) primary key,
[Name] nvarchar(50) not null
)

Create Table Book(
ID int identity(1,1) primary key,
[Name] nvarchar(50)not null,
StudentID int not nul]]></description><category></category></item><item><title><![CDATA[linq 在Datatable中的使用]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/72843621</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/72843621</guid><author>zdhlwt2008</author><pubDate>Fri, 02 Jun 2017 13:52:32 +0800</pubDate><description><![CDATA[第一,linq取datatable某一列所有数据,我要返回给一个liststring>
/*遍历DataTable*/
        class ClientStruct
        {
            public string ID = "ID";
            public string Name = "Name";
            public strin]]></description><category></category></item><item><title><![CDATA[SqlDataAdapter.Update批量数据更新]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/72644962</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/72644962</guid><author>zdhlwt2008</author><pubDate>Tue, 23 May 2017 19:02:55 +0800</pubDate><description><![CDATA[使用SqlDataAdapter.Update可以方便地对数据库进行快速、批量数据更新。我们最常用的多条数据更新方法是使用循环多次执行SQL语句或存储过程，这样虽然方便，但由于连接和数据传递要在服务器和客户端多次来往，大大增加了整个过程的时间，当数据越大时越明显！

下面对SqlDataAdapter.Update作个简单的演示介绍吧。

测试环境：SqlServer2008+VS2010]]></description><category></category></item><item><title><![CDATA[分分钟用上C#中的委托和事件]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/71724077</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/71724077</guid><author>zdhlwt2008</author><pubDate>Fri, 12 May 2017 14:13:11 +0800</pubDate><description><![CDATA[分分钟用上C#中的委托和事件


每一个初学C#的程序猿，在刚刚碰到委托和事件的概念时，估计都是望而却步，茫然摸不到头脑的。百度一搜，关于概念介绍的文章大把大把的，当然也不乏深入浅出的好文章。可看完这些文章，大多数新手，估计也只是信心满满的觉得自己看懂了，一旦要在自己的程序中用上委托和事件，就傻眼了，根本不知道什么情况下该用，也不知道具体怎么用。
本文没有任何概念介绍，旨在帮助同学们快速用]]></description><category></category></item><item><title><![CDATA[ArrayList、string、string[]之间的转换]]></title><link>https://blog.csdn.net/zdhlwt2008/article/details/56677146</link><guid>https://blog.csdn.net/zdhlwt2008/article/details/56677146</guid><author>zdhlwt2008</author><pubDate>Thu, 23 Feb 2017 17:49:32 +0800</pubDate><description><![CDATA[1、ArrarList 转换为 string[] ：
　　ArrayList list = new ArrayList();
　　list.Add("aaa");
　　list.Add("bbb");
　　string[] arrString = (string[])list.ToArray(typeof( string)) ;
2、string[] 转换为 ArrarList ：
　]]></description><category></category></item></channel></rss>