<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IT元素 &#187; Asp.Net</title>
	<atom:link href="http://www.ourys.com/tags/asp-net/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ourys.com</link>
	<description>Hector的编程笔记夹，如果喜欢，收藏一个</description>
	<lastBuildDate>Wed, 18 Jan 2012 22:07:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>C#获取内容第一张图片地址的函数</title>
		<link>http://www.ourys.com/post/158.html</link>
		<comments>http://www.ourys.com/post/158.html#comments</comments>
		<pubDate>Sun, 01 Nov 2009 00:01:38 +0000</pubDate>
		<dc:creator>Hector</dc:creator>
				<category><![CDATA[ASP/C#/.NET]]></category>
		<category><![CDATA[Asp.Net]]></category>

		<guid isPermaLink="false">http://www.ourys.com/hector/ourys.com/?p=143</guid>
		<description><![CDATA[<p>&#160;C#获取文章类第一张图片的地址的函数（留着以后用），先说一下思路：首先找到内容里面第一个&#60;img标签的位置，然后找到从这个起的第一个&#62;的位置，得到第一张图片的完整标签。然后通过分隔空格得到图片的各个属性和属性值，提取src的值就是图片的地址代码如下：</p>
]]></description>
			<content:encoded><![CDATA[<p>&nbsp;C#获取文章类第一张图片的地址的函数（留着以后用），先说一下思路：</p>
<p>首先找到内容里面第一个<span style="color: rgb(255, 0, 0); ">&lt;img</span>标签的位置，然后找到从这个起的第一个<span style="color: rgb(255, 0, 0); ">&gt;</span>的位置，得到第一张图片的完整标签。</p>
<p>然后通过分隔空格得到图片的各个属性和属性值，提取<span style="color: rgb(255, 0, 0); ">src</span>的值就是图片的地址</p>
<p>代码如下：</p>
<p>[CODE=csharp]<br/> ///<br />
<summary><br/>        /// 获取文中图片地址<br/>        /// </summary>
<p><br/>        ///
<param name="content">内容</param>        /// <returns>地址字符串</returns><br/>        public static string getImageUrl(string content)<br/>        {<br/>            int mouse = 0;<br/>            int cat = 0;<br/>            string imageLabel = “”;<br/>            string imgSrc = “”;<br/>            string[] Attributes;<br/><br/>            do																	//得到第一张图片的连接作为主要图片<br/>            {<br/>                cat = content.IndexOf(“<IMG", mouse);<br/>                mouse = content.IndexOf(&#8216;>&#8217;, cat);<br/>                imageLabel = content.Substring(cat, mouse &#8211; cat);				//图像标签 <br/><br/>                Attributes = imageLabel.Split(&#8216; &#8216;);								//将图片属性分开<br/><br/>                foreach (string temp_Attributes in Attributes)					//得到图片地址属性<br/>                    if (temp_Attributes.IndexOf(“src”) >= 0)<br/>                    {<br/>                        imgSrc = temp_Attributes.ToString();<br/>                        break;<br/>                    }<br/>                imgSrc = imgSrc.Substring(imgSrc.IndexOf(&#8216;”&#8216;) + 1, imgSrc.LastIndexOf(&#8216;”&#8216;) &#8211; imgSrc.IndexOf(&#8216;”&#8216;) &#8211; 1);	//丛地址属性中提取地址<br/><br/>            } while (imgSrc == “” &#038;&#038; cat > 0);<br/><br/>            return (imgSrc);<br/>        }<br/>[/CODE]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ourys.com/post/158.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C#验证表单类</title>
		<link>http://www.ourys.com/post/csharp_validator.html</link>
		<comments>http://www.ourys.com/post/csharp_validator.html#comments</comments>
		<pubDate>Sun, 30 Aug 2009 22:28:54 +0000</pubDate>
		<dc:creator>Hector</dc:creator>
				<category><![CDATA[ASP/C#/.NET]]></category>
		<category><![CDATA[Asp.Net]]></category>

		<guid isPermaLink="false">http://www.ourys.com/hector/ourys.com/?p=128</guid>
		<description><![CDATA[C#验证表单的静态类，方便以后使用<br/>[CODE=cshap]<br/>using System;<br/><br/>namespace Youth.Admin<br/>{<br/>    /// <br/>    /// 表单验证类<br/>    /// <br/>    public sealed class Validator<br/>    {<br/>        #region Check(object obj,string reg)验证基函数<br/>
]]></description>
			<content:encoded><![CDATA[<p>C#验证表单的静态类，方便以后使用<br/>[CODE=csharp]<br/>using System;<br/><br/>namespace Youth.Admin<br/>{<br/>    ///<br />
<summary><br/>    /// 表单验证类<br/>    /// </summary>
<p><br/>    public sealed class Validator<br/>    {<br/>        #region Check(object obj,string reg)验证基函数<br/>        public static bool Check(object obj,string reg)<br/>        {<br/>            return System.Text.RegularExpressions.Regex.IsMatch(obj.ToString(), reg, System.Text.RegularExpressions.RegexOptions.IgnoreCase);<br/>        }<br/>        #endregion<br/><br/>        #region IsNotEmpty验证是否为空<br/>        ///<br />
<summary><br/>        /// IsNotEmpty验证是否为空<br/>        /// </summary>
<p><br/>        public static bool IsNotEmpty(object obj)<br/>        {<br/>            return Check(obj,@”.?[^\s　]+”);<br/>        }<br/>        #endregion<br/><br/>        #region 验证是不是正常字符 字母，数字，下划线的组合<br/>        ///<br />
<summary><br/>        /// 验证是不是正常字符 字母，数字，下划线的组合<br/>        /// </summary>
<p><br/>        ///
<param name="source"></param>        /// <returns></returns><br/>        public static bool IsNormalChar(object obj)<br/>        {<br/>            return Check(obj, @”[\w\d_]+”);<br/>        }<br/>        #endregion<br/><br/>        #region IsEnglish验证是否为英文字符及下划线<br/>        ///<br />
<summary><br/>        /// IsEnglish验证是否为英文字符及下划线<br/>        /// </summary>
<p><br/>        public static bool IsEnglish(object obj)<br/>        {<br/>            return Check(obj,@”^[a-zA-Z0-9_\-]+$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsChinese验证是否为中文字符<br/>        ///<br />
<summary><br/>        /// IsChinese验证是否为中文字符<br/>        /// </summary>
<p><br/>        public static bool IsChinese(object obj)<br/>        {<br/>            return Check(obj, @”^[\u0391-\uFFE5]+$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsDate是否为有效的日期格式<br/>        ///<br />
<summary><br/>        /// IsDate是否为有效的日期格式<br/>        /// </summary>
<p><br/>        public static bool IsDate(object obj)<br/>        {<br/>            try<br/>            {<br/>                DateTime time = Convert.ToDateTime(obj);<br/>                return true;<br/>            }<br/>            catch<br/>            {<br/>                return false;<br/>            }<br/>        }<br/>        #endregion<br/><br/>        #region IsEmail是否为有效的邮箱格式<br/>        ///<br />
<summary><br/>        /// IsEmail是否为有效的邮箱格式<br/>        /// </summary>
<p><br/>        public static bool IsEmail(object obj)<br/>        {<br/>            return Check(obj, @”^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsUrl是否为有效的超链接格式<br/>        ///<br />
<summary><br/>        /// IsUrl是否为有效的超链接格式<br/>        /// </summary>
<p><br/>        public static bool IsUrl(object obj)<br/>        {<br/>            return Check(obj, @”^(((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp)://)|(www\.))+(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(/[a-zA-Z0-9\&amp;%_\./-~-]*)?$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsPhone是否为有效的电话号码<br/>        ///<br />
<summary><br/>        /// 例如：XXX-XXXXXXX<br/>        /// </summary>
<p><br/>        public static bool IsPhone(object obj)<br/>        {<br/>            return Check(obj, @”^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsMobile是否为有效的手机号码<br/>        ///<br />
<summary><br/>        ///  IsMobile是否为有效的手机号码<br/>        /// </summary>
<p><br/>        public static bool IsMobile(object obj)<br/>        {<br/>            return Check(obj, @”^((\(\d{2,3}\))|(\d{3}\-))?((13\d{9})|(159\d{8}))$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsIP是否为有效的IP地址<br/>        ///<br />
<summary><br/>        /// CheckIP是否为有效的IP地址<br/>        /// </summary>
<p><br/>        public static bool IsIP(object obj)<br/>        {<br/>            return Check(obj, @”^(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5])$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsZipCode是否为有效的邮政编码<br/>        ///<br />
<summary><br/>        ///IsZipCode是否为有效的邮政编码<br/>        /// </summary>
<p><br/>        public static bool IsZipCode(object obj)<br/>        {<br/>            return Check(obj, @”^[1-9]\d{5}$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsIdCard是否为有效的身份证号码<br/>        ///<br />
<summary><br/>        /// IsIdCard是否为有效的身份证号码<br/>        /// </summary>
<p><br/>        public static bool IsIdCard(object obj)<br/>        {<br/>            return Check(obj, @”(^\d{15}$)|(^\d{17}[0-9Xx]$)”);<br/>        }<br/>        #endregion<br/><br/>        #region IsQQ是否为有效的QQ号码<br/>        ///<br />
<summary><br/>        /// IsQQ是否为有效的QQ号码<br/>        /// </summary>
<p><br/>        public static bool IsQQ(object obj)<br/>        {<br/>            return Check(obj, @”^[1-9]\d{4,10}$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsMSN是否为有效的MSN帐户<br/>        ///<br />
<summary><br/>        /// IsMSN是否为有效的MSN帐户<br/>        /// </summary>
<p><br/>        public static bool IsMSN(object obj)<br/>        {<br/>            return Check(obj, @”^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsNumber验证是不是数字<br/>        ///<br />
<summary><br/>        /// IsNumber验证是不是数字<br/>        /// </summary>
<p><br/>        public static bool IsNumber(object obj)<br/>        {<br/>            return Check(obj, @”^[-\+]?\d+(\.\d+)?$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsInteger验证是不是整数<br/>        ///<br />
<summary><br/>        /// IsInteger验证是不是整数<br/>        /// </summary>
<p><br/>        public static bool IsInteger(object obj)<br/>        {<br/>            return Check(obj, @”^-?\d+$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsUnsignedInteger验证是不是正整数<br/>        ///<br />
<summary><br/>        /// IsUnsignedInteger验证是不是正整数<br/>        /// </summary>
<p><br/>        public static bool IsUnsignedInteger(object obj)<br/>        {<br/>            return Check(obj, @”^[0-9]*[1-9][0-9]*$”);<br/>        }<br/>        #endregion<br/><br/>        #region IsSignedInteger验证是不是负整数<br/>        ///<br />
<summary><br/>        /// IsSignedInteger验证是不是负整数<br/>        /// </summary>
<p><br/>        public static bool IsSignedInteger(object obj)<br/>        {<br/>            return Check(obj, @”^-[0-9]*[1-9][0-9]*$”);<br/>        }<br/>        #endregion<br/>    }<br/>}<br/><br/>[/CODE]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ourys.com/post/csharp_validator.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C#弹出框类</title>
		<link>http://www.ourys.com/post/csharp_message.html</link>
		<comments>http://www.ourys.com/post/csharp_message.html#comments</comments>
		<pubDate>Tue, 25 Aug 2009 14:46:26 +0000</pubDate>
		<dc:creator>Hector</dc:creator>
				<category><![CDATA[ASP/C#/.NET]]></category>
		<category><![CDATA[Asp.Net]]></category>

		<guid isPermaLink="false">http://www.ourys.com/hector/ourys.com/?p=127</guid>
		<description><![CDATA[写了一个弹出框的类，方便以后使用<br/>[CODE_LITE]<br/>[CODE=csharp]<br/>using System;<br/>using System.Web;<br/>/// <br/>/// Message 的摘要说明<br/>/// <br/>namespace Youth.Admin<br/>{<br/>    public sealed class Message<br/>    {<br/>        #region 输出js<br/>        /// <br/>
]]></description>
			<content:encoded><![CDATA[<p>写了一个弹出框的类，方便以后使用<br/><br/>[CODE=csharp]<br/>using System;<br/>using System.Web;<br/>///<br />
<summary><br/>/// Message 的摘要说明<br/>/// </summary>
<p><br/>namespace Youth.Admin<br/>{<br/>    public sealed class Message<br/>    {<br/>        #region 输出js<br/>        ///<br />
<summary><br/>        /// 输出js<br/>        /// </summary>
<p><br/>        ///
<param name="str">传入js代码</param>        public static void Write(string str)<br/>        {<br/>            HttpContext.Current.Response.Write(“<script>" + str + "</script>“);<br/>        }<br/>        #endregion<br/><br/>        #region 弹出框 Msg(string msg)<br/>        public static void Msg(string msg)<br/>        {<br/>            Write(“alert(&#8216;”+msg+”&#8216;);”);<br/>        }<br/>        #endregion<br/><br/>        #region 弹出框并后退  MsgTo(string msg)<br/>        public static void MsgTo(string msg)<br/>        {<br/>            Write(“alert(&#8216;” + msg + “&#8216;);history.back();”);<br/>        }<br/>        #endregion<br/><br/>        #region 弹出框并到第几页  MsgTo(string msg,int page)<br/>        public static void MsgTo(string msg,int page)<br/>        {<br/>            Write(“alert(&#8216;” + msg + “&#8216;);history.back(&#8216;”+page+”&#8216;);”);<br/>        }<br/>        #endregion<br/><br/>        #region 到达第几页 MsgTo(int page)<br/>        public static void MsgTo(int page)<br/>        {<br/>            Write(“history.back(&#8216;” + page + “&#8216;);”);<br/>        }<br/>        #endregion<br/><br/>        #region 弹出框并转跳地址 MsgTo(string msg,string url)<br/>        public static void MsgTo(string msg,string url)<br/>        {<br/>            Write(“alert(&#8216;” + msg + “&#8216;);location.href=&#8217;”+url+”&#8216;;”);<br/>        }<br/>        #endregion<br/><br/>    }<br/>}<br/><br/>[/CODE]<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ourys.com/post/csharp_message.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在类中使用RegisterStartupScript</title>
		<link>http://www.ourys.com/post/139.html</link>
		<comments>http://www.ourys.com/post/139.html#comments</comments>
		<pubDate>Mon, 24 Aug 2009 18:12:09 +0000</pubDate>
		<dc:creator>Hector</dc:creator>
				<category><![CDATA[ASP/C#/.NET]]></category>
		<category><![CDATA[Asp.Net]]></category>

		<guid isPermaLink="false">http://www.ourys.com/hector/ourys.com/?p=124</guid>
		<description><![CDATA[<p>&#160;RegisterStartupScript是page里面的方法，必须实例化一个page，代码就很简单了System.Web.UI.Page page = new System.Web.UI.Page();System.Web.UI.ClientScriptManager cs = page.ClientScript;cs.RegisterStartupScript(typeof(str</p>
]]></description>
			<content:encoded><![CDATA[<p>&nbsp;RegisterStartupScript是page里面的方法，必须实例化一个page，代码就很简单了</p>
<p>System.Web.UI.Page page = new System.Web.UI.Page();</p>
<p>System.Web.UI.ClientScriptManager cs = page.ClientScript;</p>
<p>cs.RegisterStartupScript(typeof(string), &quot;1&quot;, &quot;alert(&#8216;IT元素&#8217;);&quot;, true);</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ourys.com/post/139.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>先装.net后装iis出现：使用XSL 样式表无法查看XML 输入……</title>
		<link>http://www.ourys.com/post/138.html</link>
		<comments>http://www.ourys.com/post/138.html#comments</comments>
		<pubDate>Sun, 23 Aug 2009 16:07:41 +0000</pubDate>
		<dc:creator>Hector</dc:creator>
				<category><![CDATA[ASP/C#/.NET]]></category>
		<category><![CDATA[Asp.Net]]></category>

		<guid isPermaLink="false">http://www.ourys.com/hector/ourys.com/?p=123</guid>
		<description><![CDATA[<p>昨天全盘格了，装了vs2005之后，安装iis，结果运行出现使用XSL 样式表无法查看XML 输入。请更正错误然后单击刷新按钮 ...（ie）chrome：This page contains the following errors:error on line 1 at column 2: StartTag: invalid element nameerror on line 1 at colu</p>
]]></description>
			<content:encoded><![CDATA[<p>昨天全盘格了，装了vs2005之后，安装iis，结果运行出现</p>
<p>使用XSL 样式表无法查看XML 输入。请更正错误然后单击刷新按钮 &#8230;（ie）</p>
<p>chrome：</p>
<p>This page contains the following errors:</p>
<p>error on line 1 at column 2: StartTag: invalid element name<br />error on line 1 at column 2: Encoding error<br />Below is a rendering of the page up to the first error.</p>
<p>不同浏览器不一样，原因是没有将aspnet程序安装进入iis里面，找到sdk命令提示（可以在开始&#8211;程序&hellip;&hellip;那里或者安装目录里面查找），输入aspnet_regiis.exe /i，就ok了。 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ourys.com/post/138.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C#链接各种数据库大全</title>
		<link>http://www.ourys.com/post/40.html</link>
		<comments>http://www.ourys.com/post/40.html#comments</comments>
		<pubDate>Fri, 05 Jun 2009 04:02:27 +0000</pubDate>
		<dc:creator>Hector</dc:creator>
				<category><![CDATA[ASP/C#/.NET]]></category>
		<category><![CDATA[Access]]></category>
		<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[IBM DB2]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SyBase]]></category>

		<guid isPermaLink="false">http://www.ourys.com/hector/ourys.com/?p=32</guid>
		<description><![CDATA[<p>1.C#连接连接Access 程序代码: ------------------------------------------------------------------------------- using System.Data; using System.Data.OleDb;......string strConnection=&#34;Provider=Microsoft.Jet.</p>
]]></description>
			<content:encoded><![CDATA[<p>1.C#连接连接<span class='wp_keywordlink_affiliate'><a href="http://www.ourys.com/tags/access" title="查看 Access 中的全部文章" target="_blank">Access</a></span> <br />程序代码: <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- <br />using System.Data; <br />using System.Data.OleDb;</p>
<p>&#8230;&#8230;</p>
<p>string strConnection=&quot;Provider=Microsoft.Jet.OleDb.4.0;&quot;; <br /><a href="mailto:strConnection+=@&quot;Data">strConnection+=@&quot;Data</a> Source=C:\BegASPNET\Northwind.mdb&quot;;</p>
<p>OleDbConnection objConnection=new OleDbConnection(strConnection);</p>
<p>&#8230;&#8230;</p>
<p>objConnection.Open(); <br />objConnection.Close();</p>
<p>&#8230;&#8230;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>解释:</p>
<p>连接<span class='wp_keywordlink_affiliate'><a href="http://www.ourys.com/tags/access" title="查看 Access 中的全部文章" target="_blank">Access</a></span>数据库需要导入额外的命名空间,所以有了最前面的两条using命令,这是必不可少的!</p>
<p>strConnection这个变量里存放的是连接数据库所需要的连接字符串,他指定了要使用的数据提供者和要使用的数据源.</p>
<p>&quot;Provider=Microsoft.Jet.OleDb.4.0;&quot;是指数据提供者,这里使用的是Microsoft Jet引擎,也就是<span class='wp_keywordlink_affiliate'><a href="http://www.ourys.com/tags/access" title="查看 Access 中的全部文章" target="_blank">Access</a></span>中的数据引擎,asp.net就是靠这个和Access的数据库连接的.</p>
<p>&quot;Data Source=C:\BegASPNET\Northwind.mdb&quot;是指明数据源的位置,他的标准形式是&quot;Data Source=MyDrive:MyPath\MyFile.MDB&quot;.</p>
<p>PS: <br />1.&quot;+=&quot;后面的&quot;@&quot;符号是防止将后面字符串中的&quot;\&quot;解析为转义字符. <br />2.如果要连接的数据库文件和当前文件在同一个目录下,还可以使用如下的方法连接: <br />strConnection+=&quot;Data Source=&quot;; <br />strConnection+=MapPath(&quot;Northwind.mdb&quot;); <br />这样就可以省得你写一大堆东西了! <br />3.要注意连接字符串中的参数之间要用分号来分隔.</p>
<p>&quot;OleDbConnection objConnection=new OleDbConnection(strConnection);&quot;这一句是利用定义好的连接字符串来建立了一个链接对象,以后对数据库的操作我们都要和这个对象打交道.</p>
<p>&quot;objConnection.Open();&quot;这用来打开连接.至此,与Access数据库的连接完成. <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>2.C#连接<span class='wp_keywordlink_affiliate'><a href="http://www.ourys.com/tags/sql-server" title="查看 SQL Server 中的全部文章" target="_blank">SQL Server</a></span> <br />程序代码: <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>using System.Data; <br />using System.Data.SqlClient;</p>
<p>&#8230;</p>
<p>string strConnection=&quot;user id=sa;password=;&quot;; <br />strConnection+=&quot;initial catalog=Northwind;Server=YourSQLServer;&quot;; <br />strConnection+=&quot;Connect Timeout=30&quot;;</p>
<p>SqlConnection objConnection=new SqlConnection(strConnection);</p>
<p>&#8230;</p>
<p>objConnection.Open(); <br />objConnection.Close();</p>
<p>&#8230;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>解释:</p>
<p>连接<span class='wp_keywordlink_affiliate'><a href="http://www.ourys.com/tags/sql-server" title="查看 SQL Server 中的全部文章" target="_blank">SQL Server</a></span>数据库的机制与连接Access的机制没有什么太大的区别,只是改变了Connection对象和连接字符串中的不同参数.</p>
<p>首先,连接SQL Server使用的命名空间不是&quot;System.Data.OleDb&quot;,而是&quot;System.Data.SqlClient&quot;.</p>
<p>其次就是他的连接字符串了,我们一个一个参数来介绍(注意:参数间用分号分隔): <br />&quot;user id=sa&quot;:连接数据库的验证用户名为sa.他还有一个别名&quot;uid&quot;,所以这句我们还可以写成&quot;uid=sa&quot;. <br />&quot;password=&quot;:连接数据库的验证密码为空.他的别名为&quot;pwd&quot;,所以我们可以写为&quot;pwd=&quot;. <br />这里注意,你的SQL Server必须已经设置了需要用户名和密码来登录,否则不能用这样的方式来登录.如果你的SQL Server设置为Windows登录,那么在这里就不需要使用&quot;user id&quot;和&quot;password&quot;这样的方式来登录,而需要使用&quot;Trusted_Connection=SSPI&quot;来进行登录. <br />&quot;initial catalog=Northwind&quot;:使用的数据源为&quot;Northwind&quot;这个数据库.他的别名为&quot;Database&quot;,本句可以写成&quot;Database=Northwind&quot;. <br />&quot;Server=YourSQLServer&quot;:使用名为&quot;YourSQLServer&quot;的服务器.他的别名为&quot;Data Source&quot;,&quot;Address&quot;,&quot;Addr&quot;.如果使用的是本地数据库且定义了实例名,则可以写为&quot;Server=(local)\实例名&quot;;如果是远程服务器,则将&quot;(local)&quot;替换为远程服务器的名称或IP地址. <br />&quot;Connect Timeout=30&quot;:连接超时时间为30秒.</p>
<p>在这里,建立连接对象用的构造函数为:SqlConnection. <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>3.C#连接<span class='wp_keywordlink_affiliate'><a href="http://www.ourys.com/tags/oracle" title="查看 Oracle 中的全部文章" target="_blank">Oracle</a></span> <br />程序代码: <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>using System.Data.<span class='wp_keywordlink_affiliate'><a href="http://www.ourys.com/tags/oracle" title="查看 Oracle 中的全部文章" target="_blank">Oracle</a></span>Client; <br />using System.Data;</p>
<p>//在窗体上添加一个按钮，叫Button1，双击Button1，输入以下代码 <br />private void Button1_Click(object sender, System.EventArgs e) <br />{ <br />string ConnectionString=&quot;Data Source=sky;user=system;password=manager;&quot;;//写连接串 <br /><span class='wp_keywordlink_affiliate'><a href="http://www.ourys.com/tags/oracle" title="查看 Oracle 中的全部文章" target="_blank">Oracle</a></span>Connection conn=new OracleConnection(ConnectionString);//创建一个新连接 <br />try <br />{ <br />conn.Open(); <br />OracleCommand cmd=conn.CreateCommand();</p>
<p>cmd.CommandText=&quot;select * from MyTable&quot;;//在这儿写sql语句 <br />OracleDataReader odr=cmd.ExecuteReader();//创建一个OracleDateReader对象 <br />while(odr.Read())//读取数据，如果odr.Read()返回为false的话，就说明到记录集的尾部了 <br />{ <br />Response.Write(odr.GetOracleString(1).ToString());//输出字段1，这个数是字段索引，具体怎么使用字段名还有待研究 <br />} <br />odr.Close(); <br />} <br />catch(Exception ee) <br />{ <br />Response.Write(ee.Message); //如果有错误，输出错误信息 <br />} <br />finally <br />{ <br />conn.Close(); //关闭连接 <br />} <br />}</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>4.C#连接MySQL <br />程序代码: <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>using MySQLDriverCS;</p>
<p>// 建立数据库连接 <br />MySQLConnection DBConn; <br />DBConn = new MySQLConnection(new MySQLConnectionString(&quot;localhost&quot;,&quot;mysql&quot;,&quot;root&quot;,&quot;&quot;,3306).AsString); <br />DBConn.Open();</p>
<p>// 执行查询语句 <br />MySQLCommand DBComm; <br />DBComm = new MySQLCommand(&quot;select Host,User from user&quot;,DBConn);</p>
<p>// 读取数据 <br />MySQLDataReader DBReader = DBComm.ExecuteReaderEx();</p>
<p>// 显示数据 <br />try <br />{ <br />while (DBReader.Read()) <br />{ <br />Console.WriteLine(&quot;Host = {0} and User = {1}&quot;, DBReader.GetString(0),DBReader.GetString(1)); <br />} <br />} <br />finally <br />{ <br />DBReader.Close(); <br />DBConn.Close(); <br />}</p>
<p>//关闭数据库连接 <br />DBConn.Close();</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>5.C#连接<span class='wp_keywordlink_affiliate'><a href="http://www.ourys.com/tags/ibm-db2" title="查看 IBM DB2 中的全部文章" target="_blank">IBM DB2</a></span> <br />程序代码: <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>OleDbConnection1.Open(); <br />//打开数据库连接 <br />OleDbDataAdapter1.Fill(dataSet1,&quot;Address&quot;); <br />//将得来的数据填入dataSet <br />DataGrid1.DataBind(); <br />//绑定数据 <br />OleDbConnection1.Close(); <br />//关闭连接</p>
<p>//增加数据库数据 <br />在Web Form上新增对应字段数量个数的TextBox，及一个button，为该按键增加Click响应事件代码如下：</p>
<p>this.OleDbInsertCommand1.CommandText = &quot;INSERTsintosADDRESS(NAME, <br />EMAIL, AGE, ADDRESS) valueS <br />(”&quot;+TextBox1.Text+&quot;”,”&quot;+TextBox2.Text+&quot;”,”&quot;+TextBox3.Text+&quot;”,”&quot;+TextBox4.Text+&quot;”)&quot;; <br />OleDbInsertCommand1.Connection.Open(); <br />//打开连接 <br />OleDbInsertCommand1.ExecuteNonQuery(); <br />//执行该SQL语句 <br />OleDbInsertCommand1.Connection.Close(); <br />//关闭连接</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>6.C#连接<span class='wp_keywordlink_affiliate'><a href="http://www.ourys.com/tags/sybase" title="查看 SyBase 中的全部文章" target="_blank">SyBase</a></span> <br />程序代码: (OleDb) <br<br />
/>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Provider=Sybase.ASEOLEDBProvider.2;Initial Catalog=数据库名;User ID=用户名;Data Source=数据源;<br />Extended Properties=&quot;&quot;;Server Name=ip地址;Network Protocol=Winsock;Server Port Address=5000;</p>
<p>用C#连接SQL 2000数据库，怎样用Windows身份验证模式连接数据库<br />adoconnection1.string:=&#8217;Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=ls;Data Source=BLUEBOY;&#8217;//这样就可以了 <br />其中：&#8217;Provider=SQLOLEDB.1;为驱动程序 <br />Integrated Security=SSPI;为集中登录模式 <br />Initial Catalog=ls;/要访问的数据名 <br />Data Source</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ourys.com/post/40.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asp.Net防止刷新重复提交数</title>
		<link>http://www.ourys.com/post/4.html</link>
		<comments>http://www.ourys.com/post/4.html#comments</comments>
		<pubDate>Sat, 25 Oct 2008 23:38:10 +0000</pubDate>
		<dc:creator>Hector</dc:creator>
				<category><![CDATA[ASP/C#/.NET]]></category>
		<category><![CDATA[Asp.Net]]></category>

		<guid isPermaLink="false">http://www.ourys.com/hector/ourys.com/?p=7</guid>
		<description><![CDATA[<p>Asp.Net防止刷新重复提交数据小记2008-09-22 16:16最近在用Asp.Net编写点东西时遇到个问题：即用户在提交表单后按刷新就会重复提交数据，即所谓的&#8220;刷新重复提交&#8221;的问题。在网上搜 一下，可以找到很多关于这方面的资料，其中有一篇是来自MSDN上的一种解决方法： http://msdn.microsoft.com/library/default.asp?ur</p>
]]></description>
			<content:encoded><![CDATA[<p><span class='wp_keywordlink_affiliate'><a href="http://www.ourys.com/tags/asp-net" title="查看 Asp.Net 中的全部文章" target="_blank">Asp.Net</a></span>防止刷新重复提交数据小记2008-09-22 16:16最近在用<span class='wp_keywordlink_affiliate'><a href="http://www.ourys.com/tags/asp-net" title="查看 Asp.Net 中的全部文章" target="_blank">Asp.Net</a></span>编写点东西时遇到个问题：即用户在提交表单后按刷新就会重复提交数据，即所谓的&ldquo;刷新重复提交&rdquo;的问题。在网上搜 一下，可以找到很多关于这方面的资料，其中有一篇是来自MSDN上的一种解决方法： <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/BedrockASPNET.asp">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/BedrockASPNET.asp</a> 它是通过重新定义 System.Web.UI.Page 类来实现加载页面时，是&ldquo;刷新&rdquo;、&ldquo;后退&rdquo;请求，还是正常请求，其他的页面则继承了自定义的这 个Page类。感觉他这个方法比较独特，有例子可以下载，有兴趣的可以研究研究。</p>
<p>网上最多的解决此类问题的方法就是不保存缓存，即提交后表单上的数据不会被浏览器的缓存保存，如果此时再遇到刷新或者后退请求时， 就会显示&ldquo;网页已过期&rdquo;，数据也就不会重复提交了，这就起到了阻止刷新重复提交的效果。</p>
<p>下面以简单的提交一篇帖子为例，介绍禁用缓存防止刷新重复提交的方法，表单数据包括&ldquo;标题&rdquo;和&ldquo;正文&rdquo;两个部分。</p>
<p>以下是该方法的代码(post.aspx)：</p>
<p>//页面加载</p>
<p>protected void Page_Load(object sender, EventArgs e)</p>
<p>{</p>
<p>&nbsp;&nbsp; //可以在页面加载时设置页面的缓存为&ldquo;SetNoStore()&rdquo;，即无缓存</p>
<p>&nbsp;&nbsp; Response.Cache.SetNoStore();</p>
<p>&nbsp;&nbsp; //Session中存储的变量&ldquo;IsSubmit&rdquo;是标记是否提交成功的</p>
<p>&nbsp;&nbsp; if ((bool)Session[&quot;IsSubmit&quot;])</p>
<p>&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //如果表单数据提交成功，就设&ldquo;Session[&quot;IsSubmit&quot;]&rdquo;为false</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; Session[&quot;IsSubmit&quot;] = false;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //显示提交成功信息</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; ShowMsg.Text = &quot; * 提交成功!&quot;;</p>
<p>&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp; else</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //否则的话（没有提交，或者是页面刷新），不显示任何信息</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; ShowMsg.Text = &quot;&quot;;</p>
<p>}</p>
<p>//提交按钮(btnOK)单击事件</p>
<p>protected void btnOK_Click(object sender, EventArgs e)</p>
<p>{</p>
<p>&nbsp;&nbsp; if (txtTitle.Text.ToString().Trim() == &quot;&quot;)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //ShowMsg是用来显示提示信息的</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; ShowMsg.Text = &quot; * 标题不能为空!&quot;;</p>
<p>&nbsp;&nbsp; else if (txtText.Text.ToString().Trim() == &quot;&quot;)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; ShowMsg.Text = &quot; * 内容不能为空!&quot;;</p>
<p>&nbsp;&nbsp; else</p>
<p>&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //这里是将数据提交到数据库中，省略</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; /*</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; string sql = &quot;insert into tab&#8230;values(&#8230;)&quot;;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; MyConn.ExecQuery(sql);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; */</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //提交成功后，设&ldquo;Session[&quot;IsSubmit&quot;]&rdquo;为true</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; Session[&quot;IsSubmit&quot;] = true;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //强制转换页面（不可少，否则刷新仍会重复提交,仍转到本页），</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 通过页面的转换将缓存中的提交的数据都释放了，即提交的标单数据不会被保存到缓存里，</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 如果后退的话，将会出现该页无法显示</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; Response.Redirect(&quot;post.aspx&quot;);</p>
<p>&nbsp;&nbsp; }</p>
<p>}</p>
<p>上面这个方法非常简单也很实用，推荐大家使用。</p>
<p>下面是我自己研究出来的另一种方法，该方法不同于&ldquo;不保存缓存的方法&rdquo;，它是让浏览器保存所有页面缓存的。该方法通过随机码的方式 来判断是正常提交还是&ldquo;刷新&rdquo;或&ldquo;后退&rdquo;的。</p>
<p>首先（提交页面是post.aspx）在　Session　中　增加变量　Rnd 用来存放随机码，同时在提交表单数据时不做处理，而是让页面转到 post.aspx?r=x，这里&ldquo;x&rdquo;等于Session[&quot;Rnd&quot;]，这个时候在页面加载时，通过判断r的值和Session[&quot;Rnd&quot;]的值是否相同，如果相同就处理提 交的数据，否则即可认为是&ldquo;刷新&rdquo;或者是&ldquo;后退&rdquo;操作了，最后再次付给Session[&quot;Rnd&quot;]一个随机码。</p>
<p>以下是该方法代码(post.aspx)：</p>
<p>//获取随机码</p>
<p>public class MyRnd</p>
<p>{</p>
<p>&nbsp;&nbsp; public static string Rnd()</p>
<p>&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //随机码是由 0-9 a-z A-Z 之间的数字或字母组成的</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //下面是生成的20位随机码</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //0..9 A..Z a..z</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; //48-57 65-90 97-122</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; string rst = &quot;&quot;;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; Random rr = new Random();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 20; i++)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int ir = 0;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ir = rr.Next(123);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((ir &gt;= 48) &amp;&amp; (ir &lt;= 57)) break;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if((ir &gt;= 65) &amp;&amp; (ir &lt;= 90)) break;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if ((ir &gt;= 97) &amp;&amp; (ir &lt;= 122)) break;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (true);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rst += ((char)ir).ToString();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; return rst;</p>
<p>&nbsp;&nbsp; }</p>
<p>}</p>
<p>//页面加载</p>
<p>protected void Page_Load(object sender, EventArgs e)</p>
<p>{</p>
<p>&nbsp;&nbsp; //获取URL中请求的&ldquo;r&rdquo;值，如果&ldquo;r&rdquo;不存在则 r=&quot;&quot;</p>
<p>&nbsp;&nbsp; string r = &quot;&quot;;</p>
<p>&nbsp;&nbsp; if(Request.QueryString[&quot;r&quot;] != null)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; r = Request.QueryString[&quot;r&quot;].ToString().Trim();</p>
<p>&nbsp;&nbsp; string t;</p>
<p>&nbsp;&nbsp; //获取 &ldquo;Session&rdquo; 中的 &ldquo;Rnd&rdquo; 值，用于和&ldquo;r&rdquo;比较</p>
<p>&nbsp;&nbsp; t = Session[&quot;Rnd&quot;].ToString().Trim();</p>
<p>&nbsp;&nbsp; //如果&ldquo;r=t&rdquo;则为提交操作，即可对表单的数据进行处理</p>
<p>&nbsp;&nbsp; if(r == t)</p>
<p>&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; if (txtTitle.Text.ToString().Trim() == &quot;&quot;)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ShowMsg.Text = &quot; * 标题不能为空!&quot;;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; else if (txtText.Text.ToString().Trim() == &quot;&quot;)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ShowMsg.Text = &quot; * 内容不能为空!&quot;;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //这里是将数据提交到数据库中，省略</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string sql = &quot;insert into tab&#8230;values(&#8230;)&quot;;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyConn.ExecQuery(sql);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //提交成功后清空表单数据</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtTitle.Text = &quot;&quot;;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtText.Text = &quot;&quot;;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //显示提交成功信息</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ShowMsg.Text = &quot; * 提交成功!&quot;;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp; }</p>
<p<br />
>&nbsp;&nbsp; //否则可以认为是&ldquo;刷新&rdquo;或者&ldquo;后退&rdquo;操作</p>
<p>&nbsp;&nbsp; else</p>
<p>&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtTitle.Text = &quot;&quot;;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtText.Text = &quot;&quot;;</p>
<p>&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp; //最后要重新获得&ldquo;Session[&quot;Rnd&quot;]&rdquo;的值，并将&ldquo;btnOK.PostBackUrl&rdquo;设为&ldquo;Session[&quot;Rnd&quot;]&rdquo;的值</p>
<p>&nbsp;&nbsp; Session[&quot;Rnd&quot;] = MyRnd.Rnd();</p>
<p>&nbsp;&nbsp; btnOK.PostBackUrl =&quot;post.aspx?r=&quot; + Session[&quot;Rnd&quot;].ToString().Trim();</p>
<p>}</p>
<p>//这里提交按钮(btnOK)单击事件就不需要写任何代码了</p>
<p>通过这种方法，每次加载页面时&ldquo;Session[&quot;Rnd&quot;]&rdquo;都将得到一个新的值，而在刷新或后退时就不会得到相同的&ldquo;r&rdquo;和&ldquo;t&rdquo;值，数据也就 不会被重复提交，只有通过&ldquo;btnOK&rdquo;来提交的操作才会得到&ldquo;r==t&rdquo;，数据才会被提交处理的，通过判断随机码的方式来阻止刷新重复提交就 可以实现了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ourys.com/post/4.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

