<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[虚夜宫]]></title>
  <subtitle type="html"><![CDATA[如果手上没有剑，我就不能保护你。如果我一直握着剑，我就无法抱紧你]]></subtitle>
  <id>http://www.lwolf.cn/blog/</id>
  <link rel="alternate" type="text/html" href="http://www.lwolf.cn/blog/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.lwolf.cn/blog/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.8">PJBlog3</generator> 
  <updated>2012-01-09T13:37:58+08:00</updated>

  <entry>
	  <title type="html"><![CDATA[Oracle密码含特殊字符时的处理办法]]></title>
	  <author>
		 <name>老狼</name>
		 <uri>http://www.lwolf.cn/blog/</uri>
		 <email>superlwf@126.com</email>
	  </author>
	  <category term="" scheme="http://www.lwolf.cn/blog/default.asp?cateID=6" label="程序乐园" /> 
	  <updated>2012-01-09T13:37:58+08:00</updated>
	  <published>2012-01-09T13:37:58+08:00</published>
		  <summary type="html"><![CDATA[<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在设置oracle数据库密码时，一般来说我们都会设置比较复杂的密码，当密码中有特殊字符时，导入导出数据时就会遇到一些麻烦。我今天在使用sql loader导入数据时就遇到了问题，就因oracle的密码中带有@字符。后上网查到转义的方法：使用 &#34; &#34;双引号处理密码，使用&#39; &#39;单引号处理用户名和密码。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如：$ORACLE_HOME/bin/sqlldr userid=&#39;test/&#34;123456@899&#34;&#39;@ora10g<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其他情况(sqlplus等)也是用一样的方法来处理。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lwolf.cn/blog/article/program/oracle-password.html" /> 
	  <id>http://www.lwolf.cn/blog/default.asp?id=735</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Javascri&#112;t实现回车键触发登录]]></title>
	  <author>
		 <name>老狼</name>
		 <uri>http://www.lwolf.cn/blog/</uri>
		 <email>superlwf@126.com</email>
	  </author>
	  <category term="" scheme="http://www.lwolf.cn/blog/default.asp?cateID=6" label="程序乐园" /> 
	  <updated>2011-12-29T05:06:28+08:00</updated>
	  <published>2011-12-29T05:06:28+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在很多网站的登录界面中都会有输入用户名密码后按回车键就能登录的功能，这种功能是很方便的，可以提高网站的用户体验。实现的方法也很简单，在输入框中添加onkeydown事件，判断是否回车键再进行下一步处理。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IE中用event.KeyCode，火狐中用event.which，以下代码兼容IE和火狐<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code77450);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.lwolf.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code77450>function enterLogin(e) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var key = window.event ? e.keyCode : e.which;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (key == 13) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//处理。。。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTML代码<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code69164);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.lwolf.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code69164>&lt;input type=&#34;text&#34; onkeydown=&#34;enterLogin(event)&#34;&gt;</div></div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lwolf.cn/blog/article/program/javascript-enter-login.htm" /> 
	  <id>http://www.lwolf.cn/blog/default.asp?id=734</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[C#生成随机字符串]]></title>
	  <author>
		 <name>老狼</name>
		 <uri>http://www.lwolf.cn/blog/</uri>
		 <email>superlwf@126.com</email>
	  </author>
	  <category term="" scheme="http://www.lwolf.cn/blog/default.asp?cateID=17" label="ASP.NET" /> 
	  <updated>2011-12-28T02:32:16+08:00</updated>
	  <published>2011-12-28T02:32:16+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近做个小程序，要生成一段随机的字符串，在网上找到了一段代码，感觉挺不错的，生成的字符串很随机，效率也挺高，代码如下：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code53369);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.lwolf.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code53369>using System;<br/>using System.Security.Cryptography;<br/>using System.Text;<br/><br/>namespace Utility<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;public class PasswordGenerator<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public PasswordGenerator()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Minimum = DefaultMinimum;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Maximum = DefaultMaximum;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.ConsecutiveCharacters = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.RepeatCharacters = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.ExcludeSymbols = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Exclusions = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rng = new RNGCryptoServiceProvider();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected int GetCryptographicRandomNumber(int lBound, int uBound)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 假定 lBound &gt;= 0 &amp;&amp; lBound &lt; uBound<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 返回一个 int &gt;= lBound and &lt; uBound<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint urndnum;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[] rndnum = new Byte[4];<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (lBound == uBound - 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 只有iBound返回的情况&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return lBound;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint xcludeRndBase = (uint.MaxValue - (uint.MaxValue % (uint)(uBound - lBound)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rng.GetBytes(rndnum);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;urndnum = System.BitConverter.ToUInt32(rndnum, 0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} while (urndnum &gt;= xcludeRndBase);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return (int)(urndnum % (uBound - lBound)) + lBound;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected char GetRandomCharacter()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int upperBound = pwdCharArray.GetUpperBound(0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (true == this.ExcludeSymbols)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upperBound = PasswordGenerator.UBoundDigit;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int randomCharPosition = GetCryptographicRandomNumber(pwdCharArray.GetLowerBound(0), upperBound);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char randomChar = pwdCharArray[randomCharPosition];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return randomChar;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public string Generate()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 得到minimum 和 maximum 之间随机的长度<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int pwdLength = GetCryptographicRandomNumber(this.Minimum, this.Maximum);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder pwdBuffer = new StringBuilder();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pwdBuffer.Capacity = this.Maximum;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 产生随机字符<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char lastCharacter, nextCharacter;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 初始化标记<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastCharacter = nextCharacter = &#39;\n&#39;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; pwdLength; i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nextCharacter = GetRandomCharacter();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (false == this.ConsecutiveCharacters)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (lastCharacter == nextCharacter)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nextCharacter = GetRandomCharacter();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (false == this.RepeatCharacters)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string temp = pwdBuffer.ToString();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int duplicateIndex = temp.IndexOf(nextCharacter);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (-1 != duplicateIndex)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nextCharacter = GetRandomCharacter();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duplicateIndex = temp.IndexOf(nextCharacter);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((null != this.Exclusions))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (-1 != this.Exclusions.IndexOf(nextCharacter))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nextCharacter = GetRandomCharacter();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pwdBuffer.Append(nextCharacter);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastCharacter = nextCharacter;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (null != pwdBuffer)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return pwdBuffer.ToString();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return String.Empty;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public bool ConsecutiveCharacters<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get { return this.hasConsecutive; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set { this.hasConsecutive = value; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public bool ExcludeSymbols<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get { return this.hasSymbols; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set { this.hasSymbols = value; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public string Exclusions<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get { return this.exclusionSet; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set { this.exclusionSet = value; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public int Maximum<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get { return this.maxSize; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.maxSize = value;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (this.minSize &gt;= this.maxSize)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.maxSize = PasswordGenerator.DefaultMaximum;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public int Minimum<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get { return this.minSize; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.minSize = value;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (PasswordGenerator.DefaultMinimum &gt; this.minSize)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.minSize = PasswordGenerator.DefaultMinimum;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public bool RepeatCharacters<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get { return this.hasRepeating; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set { this.hasRepeating = value; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private const int DefaultMaximum = 10;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private const int DefaultMinimum = 6;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private const int UBoundDigit = 61;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private string exclusionSet;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private bool hasConsecutive;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private bool hasRepeating;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private bool hasSymbols;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private int maxSize;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private int minSize;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private char[] pwdCharArray = &#34;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`~!@#$^*()-_=+[]{}\\|;:&#39;\&#34;,./&#34;.ToCharArray();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private RNGCryptoServiceProvider rng;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}</div></div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lwolf.cn/blog/article/code/csharp-generate-random-string.htm" /> 
	  <id>http://www.lwolf.cn/blog/default.asp?id=733</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[使用SqlBulkCopy批量插入数据]]></title>
	  <author>
		 <name>老狼</name>
		 <uri>http://www.lwolf.cn/blog/</uri>
		 <email>superlwf@126.com</email>
	  </author>
	  <category term="" scheme="http://www.lwolf.cn/blog/default.asp?cateID=17" label="ASP.NET" /> 
	  <updated>2011-12-27T05:23:31+08:00</updated>
	  <published>2011-12-27T05:23:31+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近做个小程序，要实现批量插入数据的功能，一般来说可使用批量执行SQL语句的方式来实现。在SQL SERVER2005中可使用ADO.NET的SqlBulkCopy来实现批量插入数据的功能，具体实现方式如下：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code71757);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.lwolf.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code71757>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataTable dt = new DataTable();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt.Columns.AddRange(new DataColumn[] { new DataColumn(&#34;n&#34;, typeof(int)), <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new DataColumn(&#34;name&#34;, typeof(string)) });<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 1; i &lt; 1000; i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataRow r = dt.NewRow();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[&#34;n&#34;] = i;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[&#34;name&#34;] = &#34;test&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt.Rows.Add(r);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string connStr = &#34;Data Source=.;Initial Catalog=testdb;UID=sa;PWD=test;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlConnection sqlcon = new SqlConnection(connStr);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlcon.Open();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using (SqlBulkCopy bulk = new SqlBulkCopy(connStr))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bulk.BatchSize = dt.Rows.Count;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bulk.DestinationTableName = &#34;test3&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bulk.ColumnMappings.Add(&#34;n&#34;, &#34;ID&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bulk.ColumnMappings.Add(&#34;name&#34;, &#34;Name&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bulk.WriteToServer(dt);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlcon.Close();</div></div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lwolf.cn/blog/article/code/insert-data-with-sqlbulkcopy.htm" /> 
	  <id>http://www.lwolf.cn/blog/default.asp?id=732</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Newtonsoft.Json设置日期格式定义]]></title>
	  <author>
		 <name>老狼</name>
		 <uri>http://www.lwolf.cn/blog/</uri>
		 <email>superlwf@126.com</email>
	  </author>
	  <category term="" scheme="http://www.lwolf.cn/blog/default.asp?cateID=17" label="ASP.NET" /> 
	  <updated>2011-12-20T12:13:59+08:00</updated>
	  <published>2011-12-20T12:13:59+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在C#中使用Newtonsoft.Json来转换JSON数据时，如果没有设置日期格式，日期类型在转换化将会变成/Date(1293109500000+0800)/这样的形式，可用如下代码设置日期格式：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code6310);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.lwolf.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code6310>Newtonsoft.Json.Converters.IsoDateTimeConverter timeConverter = new Newtonsoft.Json.Converters.IsoDateTimeConverter();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeConverter.DateTimeFormat = &#34;yyyy&#39;-&#39;MM&#39;-&#39;dd&#39; &#39;HH&#39;:&#39;mm&#39;:&#39;ss&#34;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string json = Newtonsoft.Json.JsonConvert.SerializeObject(ds, timeConverter);</div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这样设置之后，转换成的JSON数据中，日期就是&#39;2011-12-21 12:43:55&#39;这样的形式了。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lwolf.cn/blog/article/code/Newtonsoft-Json-datetime-format.htm" /> 
	  <id>http://www.lwolf.cn/blog/default.asp?id=731</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[XML属性中包含特殊字符的解决办法]]></title>
	  <author>
		 <name>老狼</name>
		 <uri>http://www.lwolf.cn/blog/</uri>
		 <email>superlwf@126.com</email>
	  </author>
	  <category term="" scheme="http://www.lwolf.cn/blog/default.asp?cateID=6" label="程序乐园" /> 
	  <updated>2011-11-21T11:14:14+08:00</updated>
	  <published>2011-11-21T11:14:14+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;众所周知，XML的格式规范是很严格的，XML属性中不能包含特殊字符，必须将其转义。想要写如下的XML：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code16745);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.lwolf.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code16745>&lt;web url=&#34;<a href="http://lwolf.cn/test.aspx?id=567" target="_blank" rel="external">http://lwolf.cn/test.aspx?id=567</a>&amp;name=小明&#34;/&gt;</div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这样的格式是错误的，属性中必须使用转义的特殊字符<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XML预定义的转义字符：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp; lt; &#160;&#160;&#160;&#160;&lt; &#160;&#160;&#160;&#160;小于<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp; gt; &#160;&#160;&#160;&#160;&gt; &#160;&#160;&#160;&#160;大于<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp; amp; &#160;&#160;&#160;&#160;&amp; &#160;&#160;&#160;&#160;和号<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp; apos; &#160;&#160;&#160;&#160;&#39; &#160;&#160;&#160;&#160;省略号<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp; quot; &#160;&#160;&#160;&#160;&#34; &#160;&#160;&#160;&#160;引号<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=号可使用它的unicode来代替，即 &amp; #61;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经过替换后，上面那句即可写成<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code43448);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.lwolf.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code43448>&lt;web url=&#34;<a href="http://lwolf.cn/test.aspx?id" target="_blank" rel="external">http://lwolf.cn/test.aspx?id</a>&amp; #61;567&amp; amp;name&amp; #61;小明&#34;/&gt;</div></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这样处理之后就是正确的格式了。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; PS: 以上的编码在&amp;后面都加了一个空格，是因为本系统会自动将其转换为对应的字符。。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lwolf.cn/blog/article/program/xml-format.html" /> 
	  <id>http://www.lwolf.cn/blog/default.asp?id=730</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[无线网和内网同时连接的方法]]></title>
	  <author>
		 <name>老狼</name>
		 <uri>http://www.lwolf.cn/blog/</uri>
		 <email>superlwf@126.com</email>
	  </author>
	  <category term="" scheme="http://www.lwolf.cn/blog/default.asp?cateID=10" label="电脑技巧" /> 
	  <updated>2011-11-11T20:34:22+08:00</updated>
	  <published>2011-11-11T20:34:22+08:00</published>
		  <summary type="html"><![CDATA[<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公司的网络是内外网分离的，都是用的有线网，在这两个网之间频繁的切换很麻烦，刚好还能搜索到其他的无线网，于是上网查了无线网和内网同时连接的方法。照着网上的方法简单设置下，成功搞定，这样以后就不用来回切换网络了~~。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设置方法如下：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.设置无线网卡为默认路由网关<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在“无线网络连接”那里右键属性-&gt;Internet协议(TCP/IP)-&gt;属性-&gt;高级，添加无线路由网关(如221.180.150.1)，设置跃点数为最高优先级“1”。这步做完后，如果有线和无线连接同时存在的话，所有的数据都是由无线网卡处理的。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.设置排除信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把10.1.X.X网段(内网网段)的连接请求交由优先网卡处理，执行以下命令 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;route add 10.1.0.0 mask 255.255.0.0 10.1.1.1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;或者加一个-p参数，永久的添加路由信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;route -p add 10.1.0.0 mask 255.255.0.0 10.1.1.1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其中10.1.0.0是本地局域网网段，10.233.1.1是本机所处子网段的默认网关<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这两步设置完之后，有线内网和无线外网就可以正常使用了~~~]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lwolf.cn/blog/article/computer/WuXianWangHeNeiWangTongShiLianJieDeFangFa.html" /> 
	  <id>http://www.lwolf.cn/blog/default.asp?id=729</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[easyUI datagrid动态绑定列数据]]></title>
	  <author>
		 <name>老狼</name>
		 <uri>http://www.lwolf.cn/blog/</uri>
		 <email>superlwf@126.com</email>
	  </author>
	  <category term="" scheme="http://www.lwolf.cn/blog/default.asp?cateID=6" label="程序乐园" /> 
	  <updated>2011-11-10T22:21:22+08:00</updated>
	  <published>2011-11-10T22:21:22+08:00</published>
		  <summary type="html"><![CDATA[<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;前段时间做了一个项目，用了easyUI来做上层界面。此项目中有一个要根据用户选择的字段来呈现报表，也就是说报表中的列不是固定的。由于easyUI的datagrid需要在前台固定配置列，这样的话要动态呈现列就不那么好做了。当时想法就是能否将列的信息也通过服务器端返回，然后在datagrid中绑定。遗憾的是datagrid并没有这样的功能。于是在网上搜索，有位兄台已经给出了类似的解决方案：<a target="_blank" href="http://blog.csdn.net/qing2005/article/details/6511329" rel="external">猛击这里</a>，既然已经有了那我也不必再重新造轮子了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解决的思路就是要修改easyUI类库，让datagrid能够接受服务端返回列信息和数据，之后再绑定这两样。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;该文中提供的方法只适用于easyUI 1.2版，由于当时时间也比较紧，我也是直接用了，以后有空的话看看在新版中怎么做。在用了动态绑定列后会有一个问题，当列数超出datagrid的宽度时不会自动显示横向滚动条，这里我提供一个解决办法.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在datagrid的onLoadSuccess事件中调整高度，如下<br/><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code69570);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.lwolf.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code69570>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;onLoadSuccess: function (msg) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var vHeight = $(&#34;.datagrid-view1&#34;).height();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#34;.datagrid-header&#34;).height(24);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#34;.datagrid-body&#34;).height(vHeight - 26);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div></div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lwolf.cn/blog/article/program/easyui-datagrid-dynamic-bind-columns.htm" /> 
	  <id>http://www.lwolf.cn/blog/default.asp?id=728</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[C#连接Sybase数据库的方法]]></title>
	  <author>
		 <name>老狼</name>
		 <uri>http://www.lwolf.cn/blog/</uri>
		 <email>superlwf@126.com</email>
	  </author>
	  <category term="" scheme="http://www.lwolf.cn/blog/default.asp?cateID=17" label="ASP.NET" /> 
	  <updated>2011-11-06T21:40:08+08:00</updated>
	  <published>2011-11-06T21:40:08+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近在做的项目用到了Sybase数据库，就要在C#.NET中连接Sybase数据库，以前没做过这方面的东西，于是上网查了下连接方法。网上提供了3种方法，我这里用的是Sybase.Data.AseClient，这样的话可以不用安装Sybase就可以连接。要下载Sybase.Data.AseClient.dll、sybdrvado11.dll和sybdrvssl.dll三个DLL文件，将它们放进bin文件夹中，然后在项目中引用Sybase.Data.AseClient.dll就可以了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;连接字符串为 Data Source=192.168.1.15;Port=5000;UID=test;PWD=test，代码中要引入命名空间，具体使用如下：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code89574);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.lwolf.cn/blog/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code89574><br/>using Sybase.Data.AseClient;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AseConnection conn = new AseConnection(&#34;Data Source=192.168.1.15;Port=5000;UID=test;PWD=test&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.Open();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AseDataAdapter da = new AseDataAdapter(&#34;sel&#101;ct * from tabtest&#34;, conn);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataSet ds = new DataSet();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;da.Fill(ds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.Close();<br/></div></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sybase.Data.AseClient.dll下载地址：<a target="_blank" href="http://download.csdn.net/tag/Sybase.Data.AseClient.dll%EF%BC%8Csybdrvado11.dll%EF%BC%8Csybdrvssl.dll" rel="external">猛击</a>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lwolf.cn/blog/article/code/csharp-connect-sybase.htm" /> 
	  <id>http://www.lwolf.cn/blog/default.asp?id=727</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Informix执行动态SQL]]></title>
	  <author>
		 <name>老狼</name>
		 <uri>http://www.lwolf.cn/blog/</uri>
		 <email>superlwf@126.com</email>
	  </author>
	  <category term="" scheme="http://www.lwolf.cn/blog/default.asp?cateID=6" label="程序乐园" /> 
	  <updated>2011-10-27T20:52:25+08:00</updated>
	  <published>2011-10-27T20:52:25+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;记录一下Informix执行动态SQL的方法，以免以后忘记<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在存储过程中这样写，将SQL拼接后存在字符变量中，然后execute执行<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let sql = &#39;sel&#101;ct * from test into temp te_test with no log&#39;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:red">execute immediate sql;</span>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lwolf.cn/blog/article/program/informix-dynamic-sql.htm" /> 
	  <id>http://www.lwolf.cn/blog/default.asp?id=726</id>
  </entry>	
		
</feed>

