﻿<?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>IT博客-杨的空间</title><link>http://www.cnitblog.com/yhf119/</link><description>业精于勤，荒于嬉，行成于思，毁于随</description><language>zh-cn</language><lastBuildDate>Mon, 09 Mar 2026 17:50:23 GMT</lastBuildDate><pubDate>Mon, 09 Mar 2026 17:50:23 GMT</pubDate><ttl>60</ttl><item><title>整形美容找错医院有后患</title><link>http://www.cnitblog.com/yhf119/archive/2008/10/15/50245.html</link><dc:creator>杨</dc:creator><author>杨</author><pubDate>Wed, 15 Oct 2008 03:01:00 GMT</pubDate><guid>http://www.cnitblog.com/yhf119/archive/2008/10/15/50245.html</guid><wfw:comment>http://www.cnitblog.com/yhf119/comments/50245.html</wfw:comment><comments>http://www.cnitblog.com/yhf119/archive/2008/10/15/50245.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yhf119/comments/commentRss/50245.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yhf119/services/trackbacks/50245.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 人们都希望自己能有张漂亮的脸蛋，高挺的鼻梁、水汪汪的大眼，或者是线条优美的瓜子脸或鹅蛋脸。如果脸蛋不漂亮，能不能有个接近标准的身材，男的倒三角，女的S形？他们说，姣好的面庞、玲珑的身材，行情更走俏。当然，这只是讨论外在美。 <br>&nbsp;&nbsp;&nbsp; 有需求就有应运而生的满足需求的地方。 </p>
<p>&nbsp;&nbsp;&nbsp; 2001年，美国进行了1320万例整形手术。2006年，美国共实施了1600万例的整形手术。自1997年以来，整形手术的数量增加了一倍以上。 </p>
<p>&nbsp;&nbsp;&nbsp; 英国BBC著名记者兼电视制片人杰西卡&#183;威廉姆斯在其著作《大事件———决定人类未来的50件事》中，就把整形手术列为决定人类未来的50件事中的第12件事。书中说，&#8220;数百万其他方面都很健康的人正选择打开并损伤他们自己的身体&#8221;，而且&#8220;随着物价下跌，人们逐渐消除了对整形手术的羞耻感，成群结队去找&#8216;艺术外科医师&#8217;以寻求完美，或者至少是有所改善&#8221;。 </p>
<p>&nbsp;&nbsp;&nbsp; 国内的情形是，整形医院如雨后春笋般地在&#8220;第一人造美女&#8221;郝璐璐之后冒起，老百姓们这才知道，漂亮也可以从刀刀枪枪、血肉模糊中来。 </p>
<p>&nbsp;&nbsp;&nbsp; 在整形火热的同时，大家关心的是怎样做才让整形更安全，毕竟真刀（手术刀）真枪（激光枪）的整形，稍不慎就成&#8220;千古恨&#8221;。 </p>
<p>&nbsp;&nbsp;&nbsp; 是看广告吗？目前形形色色的整形广告占据着各电视、报纸和广播媒体，甚至有铺天盖地之势。整形界专家高建华就曾对记者称，广告是很多民营医院的生存之道，民营整形医院大打广告无可厚非，只要不是太离谱，还是不反对的。 </p>
<p>&nbsp;&nbsp;&nbsp; 什么才是不离谱的整形广告？整形广告又有多大可信度？只要听到&#8220;隆胸只需要30分钟&#8221;、&#8220;安全无痛苦、不出血、无疤痕&#8221;等不实广告词，很多爱美人士就头脑发热，找不着北，被广告牵着鼻子走。专家称，目前整形美容广告还没有自己的发布标准，一些不规范的机构就频打擦边球。 </p>
<p>&nbsp;&nbsp;&nbsp; 就像近来被曝光较多的&#8220;温馨&#8221;广告，它们大设温柔陷阱，不夸张承诺，而是与你博感情，再告诉你，这都与整形有关。譬如，日前有广州本地新闻称，某整形医院做广告，竟将曾因自杀而闹得沸沸扬扬的女模特照片做广告，因此被告上法庭。同样不道德的事情早就发生了一次，一位25岁的女性求美者，其照片被该整形医院拿来发挥想象，不但给她扣上40岁的帽子，还杜撰出姐弟恋的不伦故事。医院代表对两次事件的态度都是认为自己无错。 </p>
<p>&nbsp;&nbsp;&nbsp; 每个人都为两名受害女性感到不值，隐私、名誉权都在毫不知晓下被人贩卖了，她们通过法律途径寻求公道天经地义。而对我们大部分爱美人士来说，这又成了一个鲜活的例子———要整形，首选有声誉的医院和医生。（梁瑜） </p>
<p>&nbsp;<br></p>
<img src ="http://www.cnitblog.com/yhf119/aggbug/50245.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yhf119/" target="_blank">杨</a> 2008-10-15 11:01 <a href="http://www.cnitblog.com/yhf119/archive/2008/10/15/50245.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>asp.net C# 中的 Excel 操作</title><link>http://www.cnitblog.com/yhf119/archive/2008/01/16/38927.html</link><dc:creator>杨</dc:creator><author>杨</author><pubDate>Wed, 16 Jan 2008 06:43:00 GMT</pubDate><guid>http://www.cnitblog.com/yhf119/archive/2008/01/16/38927.html</guid><wfw:comment>http://www.cnitblog.com/yhf119/comments/38927.html</wfw:comment><comments>http://www.cnitblog.com/yhf119/archive/2008/01/16/38927.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yhf119/comments/commentRss/38927.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yhf119/services/trackbacks/38927.html</trackback:ping><description><![CDATA[<p><strong>连接字符串：<br></strong></p>
<p>Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""</p>
<br>Microsoft Jet 提供程序用于连接到 Excel 工作簿。在以下连接字符串中，Extended Properties 关键字设置 Excel 特定的属性。<br>HDR=Yes;指示第一行中包含列名，而不是数据，<br>IMEX=1;通知驱动程序始终将&#8220;互混&#8221;数据列作为文本读取。<br><br>
<img src ="http://www.cnitblog.com/yhf119/aggbug/38927.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yhf119/" target="_blank">杨</a> 2008-01-16 14:43 <a href="http://www.cnitblog.com/yhf119/archive/2008/01/16/38927.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C# 使用 GetOleDbSchemaTable 检索架构信息(表、列、主键等)</title><link>http://www.cnitblog.com/yhf119/archive/2008/01/16/38926.html</link><dc:creator>杨</dc:creator><author>杨</author><pubDate>Wed, 16 Jan 2008 06:19:00 GMT</pubDate><guid>http://www.cnitblog.com/yhf119/archive/2008/01/16/38926.html</guid><wfw:comment>http://www.cnitblog.com/yhf119/comments/38926.html</wfw:comment><comments>http://www.cnitblog.com/yhf119/archive/2008/01/16/38926.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yhf119/comments/commentRss/38926.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yhf119/services/trackbacks/38926.html</trackback:ping><description><![CDATA[本文演示如何用 ADO.NET 中 <strong>OleDbConnection</strong> 对象的 <strong>GetOleDbSchemaTable</strong> 方法检索数据库架构信息。数据源中的架构信息包括数据库或可通过数据库中的数据源、表和视图得到的目录以及所存在的约束等。表中的架构信息包括主键、列和自动编号字段。<br><br>注意，在使用<strong> SqlClient.SqlConnection </strong>对象时没有与 <strong>GetOleDbSchemaTable</strong> 等价的方法。SQL Server .NET 数据提供程序通过存储过程和信息性视图展示后端架构信息。有关可通过 Microsoft SQL Server 得到的视图和存储过程的更多信息，请参见 MSDN 库中的 Transact-SQL 参考。 <br>
<h3 id=tocHeadRef>OleDbConnection 对象的 GetOleDbSchemaTable 方法</h3>
<script type=text/javascript>loadTOCNode(2, 'summary');</script>
OLE DB .NET 数据提供程序使用 <strong>OleDbConnection</strong> 对象的 <strong>GetOleDbSchemaTable</strong> 方法展示架构信息。<strong>GetOleDbSchemaTable</strong> 返回填充了架构信息的 <strong>DataTable</strong>。<br><br><strong>GetOleDbSchemaTable</strong> 的第一个参数是架构参数，它是一个<strong> OleDbSchemaGuid</strong> 类型的标识，指定了要返回的架构信息的类型（如表、列和主键）。第二个参数是一个限制对象数组，对 <strong>DataTable</strong> 架构中返回的行进行过滤（例如，您可以指定对表的名称、类型、所有者和/或架构的限制）。 <br><br><span><a id=3a></a></span>
<h4 id=tocHeadRef>OleDbSchemaGuid 成员</h4>
<script type=text/javascript>loadTOCNode(3, 'summary');</script>
<strong>OleDbSchemaGuid</strong> 参数指定 <strong>GetOleDbSchemaTable</strong> 方法要返回的架构表的类型。 <strong>OleDbSchemaGuid</strong> 成员主要包括：
<table class="list ul">
    <tbody>
        <tr>
            <td class=bullet>&#8226;</td>
            <td class=text>列</td>
        </tr>
        <tr>
            <td class=bullet>&#8226;</td>
            <td class=text>外键</td>
        </tr>
        <tr>
            <td class=bullet>&#8226;</td>
            <td class=text>索引</td>
        </tr>
        <tr>
            <td class=bullet>&#8226;</td>
            <td class=text>主键</td>
        </tr>
        <tr>
            <td class=bullet>&#8226;</td>
            <td class=text>表</td>
        </tr>
        <tr>
            <td class=bullet>&#8226;</td>
            <td class=text>视图 </td>
        </tr>
    </tbody>
</table>
有关<strong> OleDbSchemaGuid </strong>成员的完整列表，请参见<span><a href="http://support.microsoft.com/kb/309681/zh-cn#8"><u><font color=#800080>参考</font></u></a></span>部分的"OleDbSchemaGuid Members"Web 站点。 <br><br><span><a id=3b></a></span>
<h4 id=tocHeadRef>限制</h4>
<script type=text/javascript>loadTOCNode(3, 'summary');</script>
限制是一个过滤值对象数组，每个元素对应于结果 <strong>DataTable</strong> 中的一个 <strong>DataColumn</strong>。<strong>OleDbSchemaGuid</strong> 参数决定了相应的限制。例如，在指定表的<strong> OleDbSchemaGuid </strong>时，限制数组如下所示：
<div class=indent>{TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE} </div>
若要查看可用的限制，请单击以下 Microsoft Web 站点中的任一<strong> OleDbSchemaGuid </strong>成员：
<div class=indent>OleDbSchemaGuid 成员<br><span class=ll><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidmemberstopic.asp"><u><font color=#0000ff>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidmemberstopic.asp </font></u></a></span><span class=pLink>(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidmemberstopic.asp)</span></div>
在传递限制数组的值时，对于不包含值的数组元素使用 Visual C# .NET 的<strong> null </strong>关键字。例如，如果要检索表的架构，使用<strong> OleDbSchemaGuid.Tables</strong>。但是，如果指定了表，也将返回别名、同义词、视图和其他相关对象。因此，如果您希望过滤掉除表以外的所有其他对象，请对 TABLE_TYPE 使用 TABLE 限制。可以对 TABLE_CATALOG、TABLE_SCHEMA 和 TABLE_NAME 使用<strong> null</strong>，因为您不过滤这些对象： <code>
<pre class=code>schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new Object[] {null, null, null, "TABLE"});</pre>
</code><span><a id=3c></a></span>
<h4 id=tocHeadRef>返回的数据表</h4>
<script type=text/javascript>loadTOCNode(3, 'summary');</script>
每个符合<strong> OleDbSchemaGuid </strong>类型和限制规则的对象都对应于<strong> GetOleDbSchemaTable </strong>方法返回的<strong> DataTable </strong>中的一行。每个限制列对应于<strong> DataTable </strong>的一列，后面是基于<strong> OleDbSchemaGuid </strong>字段的其他架构信息。<br><br>例如，当您使用以下代码时，返回的<strong> DataTable </strong>的每一行是一个数据库表： <code>
<pre class=code>schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new Object[] {null, null, null, "TABLE"});</pre>
</code><font face="宋体, MS Song"><strong>DataTable </strong>中返回的每一列是限制列（TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、TABLE_TYPE），后面是 TABLE_GUID、DESCRIPTION、TABLE_PROPID、DATE_CREATED 和 DATE_MODIFIED 的其他架构列。<br><br>若要获得列名称的列表（即字段描述符，如 TABLE_CATALOG、TABLE_SCHEMA 和 TABLE_NAME），您可以使用列的位置顺序。注意<strong> Columns </strong>数组的元素下标是从 0 开始的： </font><code>
<pre class=code>for (int i = 0; i &lt; schemaTable.Columns.Count; i++) {
Console.WriteLine(schemaTable.Columns[i].ToString());
}</pre>
</code><font face="宋体, MS Song">若要获得每一列的值（即实际的表名称，如 Categories、Customers 和 Employees），您可以使用该行的<strong> ItemArray </strong>的位置顺序。注意<strong> ItemArray </strong>数组的元素下标是从 0 开始的： </font><code>
<pre class=code>for (int i = 0; i &lt; schemaTable.Rows.Count; i++) {
Console.WriteLine(schemaTable.Rows[i].ItemArray[2].ToString());
}</pre>
</code><span><a id=4></a></span>
<p class=topOfPage><a href="http://support.microsoft.com/kb/309681/zh-cn#top"><img alt="" src="http://support.microsoft.com/library/images/support/en-us/uparrow.gif"><u><font color=#800080>回到顶端</font></u></a></p>
<h3 id=tocHeadRef>创建列出数据库中的表的示例</h3>
<script type=text/javascript>loadTOCNode(2, 'summary');</script>
以下示例列出 SQL Server Northwind 数据库中的表。<br><br><strong>OleDbSchemaGuid.Tables</strong> 将返回那些可由特定登录访问的表（包括视图）。如果指定对象数组 {null, null, null, "TABLE"}，那么您的过滤结果只包括 TABLE 的 TABLE_TYPE。然后在返回的架构表中的每一行列出表名称 (TABLE_NAME)。
<table class="list ol">
    <tbody>
        <tr>
            <td class=number>1.</td>
            <td class=text>启动 Visual Studio .NET。</td>
        </tr>
        <tr>
            <td class=number>2.</td>
            <td class=text>新建一个 Visual C# 控制台应用程序项目。默认情况下，Class1.cs 将添加到项目中。</td>
        </tr>
        <tr>
            <td class=number>3.</td>
            <td class=text>打开 Class1 的代码窗口。将下面的代码粘贴到代码窗口的顶部，位于 <strong>namespace</strong> 声明之上： <code>
            <pre class=code>using System.Data;
            using System.Data.OleDb;</pre>
            </code></td>
        </tr>
        <tr>
            <td class=number>4.</td>
            <td class=text>在代码窗口中，将下面的代码粘贴到 <strong>Main</strong> 函数中： <code>
            <pre class=code>OleDbConnection cn = new OleDbConnection();
            DataTable schemaTable;
            //Connect to the Northwind database in SQL Server.
            //Be sure to use an account that has permission to list tables.
            cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
            Password=password;Initial Catalog=Northwind";
            cn.Open();
            //Retrieve schema information about tables.
            //Because tables include tables, views, and other objects,
            //restrict to just TABLE in the Object array of restrictions.
            schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
            new Object[] {null, null, null, "TABLE"});
            //List the table name from each row in the schema table.
            for (int i = 0; i &lt; schemaTable.Rows.Count; i++) {
            Console.WriteLine(schemaTable.Rows[i].ItemArray[2].ToString());
            }
            //Explicitly close - don't wait on garbage collection.
            cn.Close();
            //Pause
            Console.ReadLine();</pre>
            </code></td>
        </tr>
        <tr>
            <td class=number>5.</td>
            <td class=text>修改 <strong>ConnectionString</strong>，以使用在罗斯文 (Northwind) 数据库中具有列表权限的帐户连接到您的 SQL Server 计算机。</td>
        </tr>
        <tr>
            <td class=number>6.</td>
            <td class=text>按 F5 键编译并运行该项目。您会注意到表已列在控制台窗口中。</td>
        </tr>
        <tr>
            <td class=number>7.</td>
            <td class=text>按 ENTER 键结束控制台应用程序并回到集成开发环境 (IDE)。 </td>
        </tr>
    </tbody>
</table>
<span><a id=5></a></span>
<p class=topOfPage><a href="http://support.microsoft.com/kb/309681/zh-cn#top"><img alt="" src="http://support.microsoft.com/library/images/support/en-us/uparrow.gif"><u><font color=#800080>回到顶端</font></u></a></p>
<h3 id=tocHeadRef>创建检索表的架构的示例</h3>
<script type=text/javascript>loadTOCNode(2, 'summary');</script>
以下示例列出 SQL Server Northwind 数据库中 Employees 表的架构信息。<br><br><strong>OleDbSchemaGuid.Tables</strong> 将返回那些可由特定登录访问的表（包括视图）。如果指定对象数组 {null, null, "Employees", "TABLE"}，那么您的过滤结果只包括名为 Employees 的表。然后列出返回的架构表的架构信息。
<table class="list ol">
    <tbody>
        <tr>
            <td class=number>1.</td>
            <td class=text>新建一个 Visual C# 控制台应用程序项目。默认情况下，Class1.cs 将添加到项目中。</td>
        </tr>
        <tr>
            <td class=number>2.</td>
            <td class=text>打开 Class1 的代码窗口。将下面的代码粘贴到代码窗口的顶部，位于 <strong>namespace</strong> 声明之上： <code>
            <pre class=code>using System.Data;
            using System.Data.OleDb;</pre>
            </code></td>
        </tr>
        <tr>
            <td class=number>3.</td>
            <td class=text>在代码窗口中，将下面的代码粘贴到 <strong>Main</strong> 函数中： <code>
            <pre class=code>OleDbConnection cn = new OleDbConnection();
            DataTable schemaTable;
            //Connect to the Northwind database in SQL Server.
            //Be sure to use an account that has permission to retrieve table schema.
            cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
            Password=password;Initial Catalog=Northwind";
            cn.Open();
            //Retrieve schema information about the Employees table.
            schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
            new Object[] {null, null, "Employees", "TABLE"});
            //List the schema info for the Employees table
            //in the format Field Descriptor :Field Value.
            for (int i = 0; i &lt; schemaTable.Columns.Count; i++) {
            Console.WriteLine(schemaTable.Columns[i].ToString() + " : " +
            schemaTable.Rows[0][i].ToString());
            }
            //Explicitly close - don't wait on garbage collection.
            cn.Close();
            //Pause
            Console.ReadLine();</pre>
            </code></td>
        </tr>
        <tr>
            <td class=number>4.</td>
            <td class=text>修改 <strong>ConnectionString</strong>，以使用具有检索 Employees 表架构权限的帐户连接到您的 SQL Server 计算机。</td>
        </tr>
        <tr>
            <td class=number>5.</td>
            <td class=text>按 F5 键编译并运行该项目。您会注意到表已列在控制台窗口中。</td>
        </tr>
        <tr>
            <td class=number>6.</td>
            <td class=text>按 ENTER 键结束控制台应用程序并回到 IDE。 </td>
        </tr>
    </tbody>
</table>
<span><a id=6></a></span>
<p class=topOfPage><a href="http://support.microsoft.com/kb/309681/zh-cn#top"><img alt="" src="http://support.microsoft.com/library/images/support/en-us/uparrow.gif"><u><font color=#800080>回到顶端</font></u></a></p>
<h3 id=tocHeadRef>创建列出表中的列的示例</h3>
<script type=text/javascript>loadTOCNode(2, 'summary');</script>
以下示例列出 SQL Server Northwind 数据库中 Employees 表中的列名称。<br><br><strong>OleDbSchemaGuid.Columns </strong>将返回那些可由特定登录访问的表和视图中的列。如果指定对象数组 {null, null, "Employees", null}，您的过滤结果只包括 Employees 表中的列。
<table class="list ol">
    <tbody>
        <tr>
            <td class=number>1.</td>
            <td class=text>新建一个 Visual C# 控制台应用程序项目。默认情况下，Class1.cs 将添加到项目中。</td>
        </tr>
        <tr>
            <td class=number>2.</td>
            <td class=text>打开 Class1 的代码窗口。将下面的代码粘贴到代码窗口的顶部，位于 <strong>namespace</strong> 声明之上： <code>
            <pre class=code>using System.Data;
            using System.Data.OleDb;</pre>
            </code></td>
        </tr>
        <tr>
            <td class=number>3.</td>
            <td class=text>在代码窗口中，将下面的代码粘贴到 <strong>Main</strong> 函数中： <code>
            <pre class=code>OleDbConnection cn = new OleDbConnection();
            DataTable schemaTable;
            //Connect to the Northwind database in SQL Server.
            //Be sure to use an account that has permission to list the columns in the Employees table.
            cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
            Password=password;Initial Catalog=Northwind";
            cn.Open();
            //Retrieve schema information about columns.
            //Restrict to just the Employees TABLE.
            schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
            new Object[] {null, null, "Employees", null});
            //List the column name from each row in the schema table.
            for (int i = 0; i &lt; schemaTable.Rows.Count; i++) {
            Console.WriteLine(schemaTable.Rows[i].ItemArray[3].ToString());
            }
            //Explicitly close - don't wait on garbage collection.
            cn.Close();
            //Pause
            Console.ReadLine();</pre>
            </code></td>
        </tr>
        <tr>
            <td class=number>4.</td>
            <td class=text>修改 <strong>ConnectionString</strong>，以使用具有列出 Employees 表中各列的权限的帐户连接到您的 SQL Server 计算机。</td>
        </tr>
        <tr>
            <td class=number>5.</td>
            <td class=text>按 F5 键编译并运行该项目。您会注意到 Employees 表中的列已列在控制台窗口中。</td>
        </tr>
        <tr>
            <td class=number>6.</td>
            <td class=text>按 ENTER 键结束控制台应用程序并回到 IDE。 </td>
        </tr>
    </tbody>
</table>
<span><a id=7></a></span>
<p class=topOfPage><a href="http://support.microsoft.com/kb/309681/zh-cn#top"><img alt="" src="http://support.microsoft.com/library/images/support/en-us/uparrow.gif"><u><font color=#800080>回到顶端</font></u></a></p>
<h3 id=tocHeadRef>创建列出表中的主键的示例</h3>
<script type=text/javascript>loadTOCNode(2, 'summary');</script>
以下示例列出 SQL Server Northwind 数据库的 Employees 表和 SQL Server Pubs 数据库的 Employee 表中的主键。<br><br><strong>OleDbSchemaGuid.Primary_Keys </strong>将返回那些可由特定登录访问的目录中的主键。在此示例中，<strong>OleDbConnection </strong>连接到 SQL Server，而不是连接到特定的 SQL Server 数据库： <code>
<pre class=code>cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
Password=password;"</pre>
</code><font face="宋体, MS Song">因为，罗斯文或 Pubs 数据库将在限制数组的 TABLE_CATALOG 中指定。此代码指定表的所有者"dbo"作为 TABLE_SCHEMA 限制。此外，代码还指定了 TABLE_NAME 限制的表名称。<br><br>若要获得罗斯文数据库中 Employees 表的主键，您可以使用 {"Northwind", "dbo", "Employees"} 对象数组： </font><code>
<pre class=code>schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,
new Object[] {"Northwind", "dbo", "Employees"});</pre>
</code><br><font face="宋体, MS Song">若要获得 Pubs 数据库中 Employee 表的主键，您可以使用 {"Pubs", "dbo", "Employee"} 对象数组： </font><code>
<pre class=code>schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,
new Object[] {"Pubs", "dbo", "Employee"});</pre>
</code><font face="宋体, MS Song">若要创建示例，可以按照下列步骤进行： </font>
<table class="list ol">
    <tbody>
        <tr>
            <td class=number>1.</td>
            <td class=text>新建一个 Visual C# 控制台应用程序项目。默认情况下，Class1.cs 将添加到项目中。</td>
        </tr>
        <tr>
            <td class=number>2.</td>
            <td class=text>打开 Class1 的代码窗口。将下面的代码粘贴到代码窗口的顶部，位于 <strong>namespace</strong> 声明之上： <code>
            <pre class=code>using System.Data;
            using System.Data.OleDb;</pre>
            </code></td>
        </tr>
        <tr>
            <td class=number>3.</td>
            <td class=text>在代码窗口中，将下面的代码粘贴到 <strong>Main</strong> 函数中： <code>
            <pre class=code>OleDbConnection cn = new OleDbConnection();
            DataTable schemaTable;
            //Connect to SQL Server.
            //Be sure to use an account that has permissions to list primary keys
            //in both the Northwind and Pubs databases.
            cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
            Password=password;";
            cn.Open();
            //Retrieve schema information about primary keys.
            //Restrict to just the Employees TABLE in the Northwind CATALOG.
            schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,
            new Object[] {"Northwind", "dbo", "Employees"});
            //List the primary key for the first row in the schema table.
            //The first three items in the ItemArray in the row are catalog, schema, and table.
            //The fourth item is the primary key.
            Console.WriteLine(schemaTable.Rows[0].ItemArray[3].ToString());
            //Retrieve primary key for the Employee TABLE in the Pubs CATALOG.
            schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,
            new Object[] {"Pubs", "dbo", "Employee"});
            //List the primary key for the first row in the schema table.
            Console.WriteLine(schemaTable.Rows[0].ItemArray[3].ToString());
            //Explicitly close - don't wait on garbage collection.
            cn.Close();
            //Pause
            Console.ReadLine();</pre>
            </code></td>
        </tr>
        <tr>
            <td class=number>4.</td>
            <td class=text>修改 <strong>ConnectionString</strong>，以使用具有足够权限可列出主键的帐户连接到您的 SQL Server 计算机。</td>
        </tr>
        <tr>
            <td class=number>5.</td>
            <td class=text>按 F5 键编译并运行该项目。您会注意到罗斯文数据库和 Pubs 数据库的 Employee 表的主键已列在控制台窗口中。</td>
        </tr>
        <tr>
            <td class=number>6.</td>
            <td class=text>按 ENTER 键结束控制台应用程序并回到 IDE。 </td>
        </tr>
    </tbody>
</table>
<p><br>出处：<a href="http://support.microsoft.com/kb/309681/zh-cn">http://support.microsoft.com/kb/309681/zh-cn</a><br></p>
<p>&nbsp;</p>
<img src ="http://www.cnitblog.com/yhf119/aggbug/38926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yhf119/" target="_blank">杨</a> 2008-01-16 14:19 <a href="http://www.cnitblog.com/yhf119/archive/2008/01/16/38926.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WEB服务器安全设置</title><link>http://www.cnitblog.com/yhf119/archive/2008/01/11/38759.html</link><dc:creator>杨</dc:creator><author>杨</author><pubDate>Fri, 11 Jan 2008 08:38:00 GMT</pubDate><guid>http://www.cnitblog.com/yhf119/archive/2008/01/11/38759.html</guid><wfw:comment>http://www.cnitblog.com/yhf119/comments/38759.html</wfw:comment><comments>http://www.cnitblog.com/yhf119/archive/2008/01/11/38759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yhf119/comments/commentRss/38759.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yhf119/services/trackbacks/38759.html</trackback:ping><description><![CDATA[一、操作系统配置<br><br>1.安装操作系统(NTFS分区)后，装杀毒软件，我选用的是卡巴。<br><br>2.安装系统补丁。扫描漏洞全面杀毒<br><br>3.删除Windows Server 2003默认共享<br>首先编写如下内容的批处理文件：<br>@echo off<br>net share C$ /del<br>net share D$ /del<br>net share E$ /del<br>net share F$ /del<br>net share admin$ /del<br>文件名为delshare.bat，放到启动项中，每次开机时会自动删除共享。<br><br>4.禁用IPC连接<br>打开CMD后输入如下命令即可进行连接：net use\\ip\ipc$ "password" /user:"usernqme"。我们可以通过修改注册表来禁用IPC连接。打开注册表编辑器。找到如下组建HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa中的restrictanonymous子键，将其值改为1即可禁用IPC连接。<br><br>5.删除"网络连接"里的协议和服务<br>在"网络连接"里，把不需要的协议和服务都删掉，这里只安装了基本的Internet协议（TCP/IP），同时在高级tcp/ip设置里--"NetBIOS"设置"禁用tcp/IP上的NetBIOS（S）"。<br><br>6.启用windows连接防火墙，只开放web服务(80端口)。<br>注：在2003系统里，不推荐用TCP/IP筛选里的端口过滤功能，譬如在使用FTP服务器的时候，如果仅仅只开放21端口，由于FTP协议的特殊性，在进行FTP传输的时候，由于FTP 特有的Port模式和Passive模式，在进行数据传输的时候，需要动态的打开高端口，所以在使用TCP/IP过滤的情况下，经常会出现连接上后无法列出目录和数据传输的问题。所以在2003系统上增加的windows连接防火墙能很好的解决这个问题，所以都不推荐使用网卡的TCP/IP过滤功能。<br><br>7.磁盘权限<br>系统盘只给 Administrators 和 SYSTEM 权限<br>系统盘\Documents and Settings 目录只给 Administrators 和 SYSTEM 权限；<br>系统盘\Documents and Settings\All Users 目录只给 Administrators 和 SYSTEM 权限；<br>系统盘\Documents and Settings\All Users\Application Data目录只给 Administrators 和 SYSTEM 权限；<br>系统盘\Windows 目录只给 Administrators 、 SYSTEM 和 users 权限；<br>系统盘\Windows\System32\net.exe，net1.exe，cmd.exe，command.exe，ftp.exe，netstat.exe，regedit.exe，at.exe，attrib.exe，cacls.exe 文件只给 Administrators 权限(如果觉得没用就删了它，比如我删了cmd.exe，command.exe，嘿嘿。)；<br>其它盘，有安装程序运行的(我的sql server 2000 在D盘)给 Administrators 和 SYSTEM 权限，无只给 Administrators 权限。<br><br>8.本地安全策略设置<br>开始菜单—&gt;管理工具—&gt;本地安全策略<br>A、本地策略——&gt;审核策略 (可选用)<br>审核策略更改 成功 失败<br>审核登录事件 成功 失败<br>审核对象访问 失败<br>审核过程跟踪 无审核<br>审核目录服务访问 失败<br>审核特权使用 失败<br>审核系统事件 成功 失败<br>审核账户登录事件 成功 失败<br>审核账户管理 成功 失败<br><br>B、本地策略——&gt;用户权限分配<br>关闭系统：只有Administrators组、其它全部删除。<br>通过终端服务拒绝登陆：加入Guests、Users组<br>通过终端服务允许登陆：只加入Administrators，Remote Desktop Users，其他全部删除<br><br>C、本地策略——&gt;安全选项<br>交互式登陆：不显示上次的用户名 启用<br>网络访问：可匿名访问的共享 全部删除<br>网络访问：可匿名访问的命名管道 全部删除<br>**网络访问：可远程访问的注册表路径 全部删除<br>**网络访问：可远程访问的注册表路径和子路径 全部删除<br>帐户：重命名来宾帐户 重命名一个帐户<br>(下面一项更改可能导致sqlserver不能使用)<br>帐户：重命名系统管理员帐户 重命名一个帐户<br><br><br><br>二、iis配置(包括网站所在目录)<br><br>1.新建自己的网站(*注意：在应用程序设置中执行权限设为无，在需要的目录里再更改)，目录不在系统盘<br>注：为支持asp.net,将系统盘\Inetpub\wwwroot中的aspnet_client文件夹复制到web根目录下，并给web根目录加上users权限。<br><br>2.删掉系统盘\inetpub目录<br><br>3.删除不用的映射<br>在"应用程序配置"里，只给必要的脚本执行权限：ASP、ASPX。<br><br>4.为网站创建系统用户<br>A.例如：网站为yushan43436.net，新建用户yushan43436.net权限为guests。然后在web站点属性里"目录安全性"---"身份验证和访问控制"里设置匿名访问使用下列Windows 用户帐户"的用户名和密码都使用yushan43436.net这个用户的信息。(用户名：主机名\yushan43436.net)<br>B.给网站所在的磁盘目录添加用户yushan43436.net，只给读取和写入的权限。<br><br>5.设置应用程及子目录的执行权限<br>A.主应用程序目录中的"属性--应用程序设置--执行权限"设为纯脚本<br>B.在不需要执行asp、asp.net的子目录中，例如上传文件目录，执行权限设为无<br><br>6.应用程序池设置<br>我的网站使用的是默认应用程序池。设置"内存回收"：这里的最大虚拟内存为：1000M，最大使用的物理内存为256M，这样的设置几乎是没限制这个站点的性能的。<br>回收工作进程(分钟)：1440<br>在下列时间回收工作进程：06:00<br><br><br><br>三、sql server 2000 配置<br><br>1.密码设置<br>我编的程序用了sa用户，密码设置超复杂(自己记不住，保存在手机里，嘿嘿)。<br><br>2.删除危险的扩展存储过程和相关.dll。<br>Xp_cmdshell(这个肯定首当其冲，不用说了)、Xp_regaddmultistring、Xp_regdeletekey、Xp_regdeletevalue、Xp_regenumvalues、Xp_regread、Xp_regwrite、Xp_regremovemultistring<br><br><br>四、其它设置(可选用，本人可不负责)<br><br>1.任何用户密码都要复杂，不需要的用户---删。<br><br>2.防止SYN洪水攻击<br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters<br>新建DWORD值，名为SynAttackProtect，值为2<br><br>3.禁止响应ICMP路由通告报文<br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface<br>新建DWORD值，名为PerformRouterDiscovery 值为0<br><br>4.防止ICMP重定向报文的攻击<br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters<br>将EnableICMPRedirects 值设为0<br><br>5.不支持IGMP协议<br>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters<br>新建DWORD值，名为IGMPLevel 值为0<br><br>6.禁用DCOM：<br>运行中输入 Dcomcnfg.exe。 回车，单击&#8220;控制台根节点&#8221;下的&#8220;组件服务&#8221;。打开&#8220;计算机&#8221;子文件夹。<br>对于本地计算机，请以右键单击&#8220;我的电脑&#8221;，然后选择&#8220;属性&#8221;。选择&#8220;默认属性&#8221;选项卡。<br>清除&#8220;在这台计算机上启用分布式 COM&#8221;复选框。 
<img src ="http://www.cnitblog.com/yhf119/aggbug/38759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yhf119/" target="_blank">杨</a> 2008-01-11 16:38 <a href="http://www.cnitblog.com/yhf119/archive/2008/01/11/38759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 中实现对象可改变尺寸(原标题：Make your DIVs Resizeable)</title><link>http://www.cnitblog.com/yhf119/archive/2007/12/01/37117.html</link><dc:creator>杨</dc:creator><author>杨</author><pubDate>Sat, 01 Dec 2007 02:32:00 GMT</pubDate><guid>http://www.cnitblog.com/yhf119/archive/2007/12/01/37117.html</guid><wfw:comment>http://www.cnitblog.com/yhf119/comments/37117.html</wfw:comment><comments>http://www.cnitblog.com/yhf119/archive/2007/12/01/37117.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yhf119/comments/commentRss/37117.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yhf119/services/trackbacks/37117.html</trackback:ping><description><![CDATA[<p>I love using Scriptaculous for its effects and drag/drop. However, I need to have my DIVs be resizable too. To make this happen, I&#8217;ve written a class called <strong>Resizeable</strong> that can be added to a DIV in the same way that <strong>Draggable</strong> can be.</p>
<p>This code is standalone (it needs Prototype, but not Scriptaculous), and it can be used with <strong>Draggable</strong> with one note: The <strong>Draggable</strong> handle cannot be the element that is <strong>Resizeable</strong>, you must specify a handle element when you create a <strong>Draggable</strong> to avoid confusion between <strong>Draggable</strong> and <strong>Resizeable</strong>.</p>
<p>This doesn&#8217;t work very well<br>...<br>...<br><code type="ruby">new Draggable(&#8216;foo&#8217;); new Resizeable(&#8216;foo&#8217;); <br>...<br>...</code></p>
<p>This works nicely:<br>...<br>...<code type="ruby">
<p>new Draggable(&#8216;foo&#8217;, {handle: &#8216;bar&#8217;}); new Resizeable(&#8216;foo&#8217;); </code></p>
<p>There aren&#8217;t many options for this object, but here they are:</p>
<p>The grab areas can be defined with <em>top</em>, <em>left</em>, <em>bottom</em>, <em>right</em>. Each defaults to 6 pixels. If you set this to 0 (zero), then resize in that direction will be disabled.<br><code type="ruby">... <br></code><code type="ruby">...</p>
<p>new Resizeable(&#8216;foo&#8217;, {top: 0, left:50} ); </code></p>
<p>A callback function can be defined that will be called when the resize is over.<br>...<br><code type="ruby">... </p>
<p>new Resizeable(&#8216;foo&#8217;, {resize: function(el) { alert(&#8216;Done!&#8217;); } } ); </code></p>
<p>The minimum height and width of the DIV can be specified as minHeight and minWidth options.</p>
<p><a href="http://blog.craz8.com/test-resize.html"><u><font color=#800080>The resizable code in action</font></u></a> &#8211; view source to see how it works.</p>
<p>The Javascript source file can be <a href="http://blog.craz8.com/files/resize.js"><u><font color=#800080>downloaded here</font></u></a></p>
<p>Currently, this code doesn&#8217;t quite work in IE (the DIV can jiggle around a little), but Firefox 1.0 is working Ok.</p>
<p><br>&nbsp;</p>
<p>出处：<a href="http://blog.craz8.com/articles/2005/12/01/make-your-divs-resizeable">http://blog.craz8.com/articles/2005/12/01/make-your-divs-resizeable</a></p>
<img src ="http://www.cnitblog.com/yhf119/aggbug/37117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yhf119/" target="_blank">杨</a> 2007-12-01 10:32 <a href="http://www.cnitblog.com/yhf119/archive/2007/12/01/37117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP.NET效率陷阱之--Attributes</title><link>http://www.cnitblog.com/yhf119/archive/2007/11/24/36829.html</link><dc:creator>杨</dc:creator><author>杨</author><pubDate>Sat, 24 Nov 2007 06:41:00 GMT</pubDate><guid>http://www.cnitblog.com/yhf119/archive/2007/11/24/36829.html</guid><wfw:comment>http://www.cnitblog.com/yhf119/comments/36829.html</wfw:comment><comments>http://www.cnitblog.com/yhf119/archive/2007/11/24/36829.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yhf119/comments/commentRss/36829.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yhf119/services/trackbacks/36829.html</trackback:ping><description><![CDATA[<font face=Tahoma>　　众所周知，在编写WebCustomControl时，继承于WebControl基类的Attributes以及其Attributes.CssStyle属性是十分常用和重要的。但就是这两个重要的属性，如果开发中使用不当却会带来莫名其妙的效率问题。<br><br>　　由于html的灵活性和不完备性，导致了WebControl基类没有完整的表现html元素所提供和支持的所有标签属性和CSS属性（当然由于不同browser的兼容问题，要提供完备的属性是不可能的）。又由于很多html标签属性和CSS属性都是很生僻的，很少或极少被使用，如果要完备的支持，反而会成为WebControl的负担。所以Attributes和Attributes.CssStyle这两个属性很好的解决了这个问题，当然这两个属性除了支持应有的html标签属性和CSS属性外，还支持任何合法的自定义key/value对。这里要讨论的问题就来之这个对自定义key/value对的支持上。<br><br>　　Attributes属性的类型是一个AttributeCollection，本来很自然的一个东西，可是不知道怎么搞得，AttributeCollection的构造函数却需要一个StateBag参数：</font>
<div align=center>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
<div align=left><font face=Tahoma><font size=3><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/24483552qs6o13i497et.gif" align=top></font><span style="COLOR: #0000ff">public</span></font><font face=Tahoma><span style="COLOR: #000000">&nbsp;AttributeCollection(StateBag&nbsp;bag)<br><img id=Codehighlighter1_41_66_Open_Image onclick="this.style.display='none'; Codehighlighter1_41_66_Open_Text.style.display='none'; Codehighlighter1_41_66_Closed_Image.style.display='inline'; Codehighlighter1_41_66_Closed_Text.style.display='inline';" src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/2048657388j352030b51.gif" align=top><img id=Codehighlighter1_41_66_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_41_66_Closed_Text.style.display='none'; Codehighlighter1_41_66_Open_Image.style.display='inline'; Codehighlighter1_41_66_Open_Text.style.display='inline';" src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/60122650vi0f3qu00974.gif" align=top></span><span id=Codehighlighter1_41_66_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/32274746j87rrs6nptx4.gif"></span></font><span id=Codehighlighter1_41_66_Open_Text><font face=Tahoma><span style="COLOR: #000000">{<br><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/414775344a209pfblm6t.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">._bag&nbsp;</span><span style="COLOR: #000000">=</span></font><span style="COLOR: #000000"><font face=Tahoma>&nbsp;bag;<br><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/8128733273v965nc18dr.gif" align=top>}</font></span></span></div>
</div>
</div>
<br><font face=Tahoma>　　这样的结果就是，Attributes和Attributes.CssStyle可能会被保存在ViewState中，事实上ASP.NET默认确实会保存其中的内容到ViewState中。<br><br>　　这种设计真的是让人觉得莫名其妙，在大家对ViewState效率问题的讨论中，觉得ViewState确实是鸡肋，用来保持一些服务器状态和数据让大家觉得方便也就算了。可是居然把和UI相关的内容都一股脑存到ViewState里，真的是疯狂。<br><br>　　下面是使用Attributes定义了一些自定义内容后的ViewState的情形：<br>
<p align=center><img alt=Attributes-ViewState.png src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/241005300zj24yy9rx78s.png" border=0></p>
<p align=center><em><font color=#808080>// AnalysisReport自定义控件上定义了一些自定的内容</font></em></p>
<p align=left>　　Attributes和Attributes.CssStyle被自动保存到ViewState中后，除了ViewState体积急增后，PostBack时Load ViewState的负担也同时增大了。上面这个事例中的页面PostBack的LoadState代价，如下图：</p>
<p align=center><img alt=LoadViewStateElapsed.png src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/36834213ot96o8c2ukt6s.png" border=0></p>
<p align=left>　　实际上我在编写控件时，从来没有想过要保持Attributes和Attributes.CssStyle，也没有想过要再次使用其中的数据。而且这个默认保存到ViewState的行为居然不能定制（至少我还没有发现），后来想到在ASP.NET页面生存期中，SaveState结束在PreRender中，所以在Render事件中使用Attributes和Attributes.CssStyle的就不会保存到ViewState中去。<br><br>　　修改代码：</p>
<p align=center></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
<div align=center><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/270550474sg9oe982242.gif" align=top><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">override</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;OnPreRender(EventArgs&nbsp;e)<br><img id=Codehighlighter1_49_160_Open_Image onclick="this.style.display='none'; Codehighlighter1_49_160_Open_Text.style.display='none'; Codehighlighter1_49_160_Closed_Image.style.display='inline'; Codehighlighter1_49_160_Closed_Text.style.display='inline';" src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/67775646f0e5p80puc19.gif" align=top><img id=Codehighlighter1_49_160_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_49_160_Closed_Text.style.display='none'; Codehighlighter1_49_160_Open_Image.style.display='inline'; Codehighlighter1_49_160_Open_Text.style.display='inline';" src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/37075734iry7f18939sg.gif" align=top></span><span id=Codehighlighter1_49_160_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/720870326jd65ubw1b13.gif"></span><span id=Codehighlighter1_49_160_Open_Text><span style="COLOR: #000000">{<br><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/1261773025gzr399e72b.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.Attributes[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abc</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">123</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/40086048c4t0n47782bq.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.Attributes.CssStyle[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abc-style</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">123-style</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/02153614lmtnj0jk6c00.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000">.OnPreRender(e);<br><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/113554029qpt7f6k7ehq.gif" align=top>}</span></span></div>
</div>
</font><br><font face=宋体>　　为如下形式：
<p>&#160;</p>
</font>
<p align=center></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><font face=宋体><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/420816681w056j8ej350.gif" align=top></font><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">override</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Render(HtmlTextWriter&nbsp;output)<br><img id=Codehighlighter1_54_164_Open_Image onclick="this.style.display='none'; Codehighlighter1_54_164_Open_Text.style.display='none'; Codehighlighter1_54_164_Closed_Image.style.display='inline'; Codehighlighter1_54_164_Closed_Text.style.display='inline';" src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/8570146728ftzf5o7o2t.gif" align=top><img id=Codehighlighter1_54_164_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_54_164_Closed_Text.style.display='none'; Codehighlighter1_54_164_Open_Image.style.display='inline'; Codehighlighter1_54_164_Open_Text.style.display='inline';" src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/63578640t585i2761f2f.gif" align=top></span><span id=Codehighlighter1_54_164_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/7277022180s7sxh7w47h.gif"></span><span id=Codehighlighter1_54_164_Open_Text><span style="COLOR: #000000">{<br><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/50557403k8a660z63dch.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.Attributes[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abc</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">123</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/7121473381e89g4pplkk.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.Attributes.CssStyle[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abc-style</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">123-style</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/3001337758l2132v8f0u.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;output.Write(Text);<br><img src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/71648454j66594tx02s0.gif" align=top>}</span></span></div>
<p>&#160;</p>
<p>　　就不会再将Attributes和Attributes.CssStyle保存到ViewState中了，上面那个AnalysisReport按上面的示例修改后，绑定同样数据的运行效果为：</p>
<p align=center><img alt=Attributes-ViewState02.png src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/146353736y816vq7yr07s.png" border=0></p>
<p>　　LoadState的代价也大大降低，其开销为：</p>
<p align=center><img alt=LoadViewStateElapsed02.png src="http://news.newhua.com/Newhua_Files/Net_pic/2007-3/19/1165402856vb2097tga6s.png" border=0></p>
<img src ="http://www.cnitblog.com/yhf119/aggbug/36829.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yhf119/" target="_blank">杨</a> 2007-11-24 14:41 <a href="http://www.cnitblog.com/yhf119/archive/2007/11/24/36829.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C# 中取得汉字拼音首字母</title><link>http://www.cnitblog.com/yhf119/archive/2007/11/24/36826.html</link><dc:creator>杨</dc:creator><author>杨</author><pubDate>Sat, 24 Nov 2007 06:00:00 GMT</pubDate><guid>http://www.cnitblog.com/yhf119/archive/2007/11/24/36826.html</guid><wfw:comment>http://www.cnitblog.com/yhf119/comments/36826.html</wfw:comment><comments>http://www.cnitblog.com/yhf119/archive/2007/11/24/36826.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/yhf119/comments/commentRss/36826.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yhf119/services/trackbacks/36826.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: using&nbsp;System;using&nbsp;System.Data;using&nbsp;System.Configuration;using&nbsp;System.Web;using&nbsp;System.Web.Security;using&nbsp;System.Web.UI;using&nbsp;System.Web.UI.WebControls;using&nbsp;S...&nbsp;&nbsp;<a href='http://www.cnitblog.com/yhf119/archive/2007/11/24/36826.html'>阅读全文</a><img src ="http://www.cnitblog.com/yhf119/aggbug/36826.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yhf119/" target="_blank">杨</a> 2007-11-24 14:00 <a href="http://www.cnitblog.com/yhf119/archive/2007/11/24/36826.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL SERVER 中的汉字拼音函数</title><link>http://www.cnitblog.com/yhf119/archive/2007/11/24/36825.html</link><dc:creator>杨</dc:creator><author>杨</author><pubDate>Sat, 24 Nov 2007 05:58:00 GMT</pubDate><guid>http://www.cnitblog.com/yhf119/archive/2007/11/24/36825.html</guid><wfw:comment>http://www.cnitblog.com/yhf119/comments/36825.html</wfw:comment><comments>http://www.cnitblog.com/yhf119/archive/2007/11/24/36825.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yhf119/comments/commentRss/36825.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yhf119/services/trackbacks/36825.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;--取得字符串每个汉字的拼音首字母create&nbsp;function&nbsp;f_GetPy(@str&nbsp;nvarchar(4000))returns&nbsp;nvarchar(4000)asbegindeclare&nbsp;@strlen&nbsp;int,@re&nbsp;nvarchar(4000)declare&nbsp;@t&nbsp;table(ch...&nbsp;&nbsp;<a href='http://www.cnitblog.com/yhf119/archive/2007/11/24/36825.html'>阅读全文</a><img src ="http://www.cnitblog.com/yhf119/aggbug/36825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yhf119/" target="_blank">杨</a> 2007-11-24 13:58 <a href="http://www.cnitblog.com/yhf119/archive/2007/11/24/36825.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL Server 中日期操作的实用范例 </title><link>http://www.cnitblog.com/yhf119/archive/2007/11/12/36177.html</link><dc:creator>杨</dc:creator><author>杨</author><pubDate>Mon, 12 Nov 2007 09:06:00 GMT</pubDate><guid>http://www.cnitblog.com/yhf119/archive/2007/11/12/36177.html</guid><wfw:comment>http://www.cnitblog.com/yhf119/comments/36177.html</wfw:comment><comments>http://www.cnitblog.com/yhf119/archive/2007/11/12/36177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yhf119/comments/commentRss/36177.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yhf119/services/trackbacks/36177.html</trackback:ping><description><![CDATA[<span class=a14c id=zoom>&nbsp;
<p style="TEXT-INDENT: 2em">
<center><strong>适合初学者学习的日期操作范例</strong></center>
<p style="TEXT-INDENT: 2em"><strong>1.显示本月第一天</strong>
<p style="TEXT-INDENT: 2em">
<center>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 59.64%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 42px; BACKGROUND-COLOR: #eeeeee">
<p align=left><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff00ff">DATEADD</span><span style="COLOR: #000000">(mm,</span><span style="COLOR: #ff00ff">DATEDIFF</span><span style="COLOR: #000000">(mm,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">()),</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff00ff">convert</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">datetime</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">convert</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">varchar</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">8</span><span style="COLOR: #000000">),</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">(),&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #800000">120</span><span style="COLOR: #000000">)</span><span style="COLOR: #808080">+</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">01</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">120</span><span style="COLOR: #000000">)</span></p>
</div>
</center><ccid_nobr></ccid_nobr>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>2.显示本月最后一天</strong>
<p style="TEXT-INDENT: 2em">
<center>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 59.78%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 58px; BACKGROUND-COLOR: #eeeeee">
<p align=left><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff00ff">dateadd</span><span style="COLOR: #000000">(</span><span style="COLOR: #ff00ff">day</span><span style="COLOR: #000000">,</span><span style="COLOR: #808080">-</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">convert</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">datetime</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">convert</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">varchar</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">8</span><span style="COLOR: #000000">),</span><span style="COLOR: #ff00ff">dateadd</span><span style="COLOR: #000000">(</span><span style="COLOR: #ff00ff">month</span><span style="COLOR: #000000">,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">()),</span><span style="FONT-WEIGHT: bold; COLOR: #800000">120</span><span style="COLOR: #000000">)</span><span style="COLOR: #808080">+</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">01</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">120</span><span style="COLOR: #000000">))<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff00ff">dateadd</span><span style="COLOR: #000000">(ms,</span><span style="COLOR: #808080">-</span><span style="FONT-WEIGHT: bold; COLOR: #800000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">DATEADD</span><span style="COLOR: #000000">(mm,</span><span style="COLOR: #ff00ff">DATEDIFF</span><span style="COLOR: #000000">(m,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">())</span><span style="COLOR: #808080">+</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000">,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">))</span></p>
</div>
</center><ccid_nobr></ccid_nobr>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>3.上个月的最后一天 </strong>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<center>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 58.73%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 26px; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff00ff">dateadd</span><span style="COLOR: #000000">(ms,</span><span style="COLOR: #808080">-</span><span style="FONT-WEIGHT: bold; COLOR: #800000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">DATEADD</span><span style="COLOR: #000000">(mm,</span><span style="COLOR: #ff00ff">DATEDIFF</span><span style="COLOR: #000000">(mm,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">()),</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">))</span></div>
<ccid_nobr></ccid_nobr></center>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>4.本月的第一个星期一i</strong>
<p style="TEXT-INDENT: 2em">
<center><ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code>select DATEADD(wk,DATEDIFF(wk,0, dateadd(dd,6-datepart(
            day,getdate()),getdate())),0)</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>5.本年的第一天 </strong>
<p style="TEXT-INDENT: 2em">
<center><ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code>SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0)</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>6.本年的最后一天 </strong>
<p style="TEXT-INDENT: 2em">
<center><ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code>SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0))</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>7.去年的最后一天 </strong>
<p style="TEXT-INDENT: 2em">
<center><ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code>SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0))</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>8.本季度的第一天 </strong>
<p style="TEXT-INDENT: 2em">
<center><ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code>SELECT DATEADD(qq,DATEDIFF(qq,0,getdate()),0)</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>9.本周的星期一 </strong>
<p style="TEXT-INDENT: 2em">
<center><ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code>SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0)</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>10.查询本月的记录 </strong>
<p style="TEXT-INDENT: 2em">
<center><ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code>select * from tableName where DATEPART(mm, theDate)
            =DATEPART(mm, GETDATE()) and DATEPART(yy, theDate)
            = DATEPART(yy, GETDATE())</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>11.查询本周的记录 </strong>
<p style="TEXT-INDENT: 2em">
<center><ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code>select * from tableName where DATEPART(wk, theDate) = DATEPART
            (wk, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>12查询本季的记录</strong> 注：其中:GETDATE()是获得系统时间的函数。
<p style="TEXT-INDENT: 2em">
<center><ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code>select * from tableName where DATEPART(qq, theDate) = DATEPART
            (qq, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>13.获取当月总天数:</strong>
<p style="TEXT-INDENT: 2em">
<center><ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code>select DATEDIFF(dd,getdate(),DATEADD
            (mm, 1, getdate()))
            select datediff(day,
            dateadd(mm, datediff(mm,'',getdate()), ''),
            dateadd(mm, datediff(mm,'',getdate()), '1900-02-01'))</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>14.获取当前为星期几</strong>
<p style="TEXT-INDENT: 2em">
<center><ccid_nobr>
<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 9pt" bgColor=#e6e6e6>
            <pre><ccid_code>DATENAME(weekday, getdate())</ccid_code></pre>
            </td>
        </tr>
    </tbody>
</table>
</ccid_nobr></center></span>
<img src ="http://www.cnitblog.com/yhf119/aggbug/36177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yhf119/" target="_blank">杨</a> 2007-11-12 17:06 <a href="http://www.cnitblog.com/yhf119/archive/2007/11/12/36177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>批量修改数据表和存储过程的所有者(2000)或架构（2005)</title><link>http://www.cnitblog.com/yhf119/archive/2007/11/12/36158.html</link><dc:creator>杨</dc:creator><author>杨</author><pubDate>Mon, 12 Nov 2007 01:02:00 GMT</pubDate><guid>http://www.cnitblog.com/yhf119/archive/2007/11/12/36158.html</guid><wfw:comment>http://www.cnitblog.com/yhf119/comments/36158.html</wfw:comment><comments>http://www.cnitblog.com/yhf119/archive/2007/11/12/36158.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yhf119/comments/commentRss/36158.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yhf119/services/trackbacks/36158.html</trackback:ping><description><![CDATA[<p>sql server 2000<br></p>
<p>exec sp_changeobjectowner '[bbsdb].[dv_style]',[dbo]</p>
<p>更改当前数据库中对象的所有者备份、恢复数据库时，往往会出现所有者是原来的用户，这样当你在新的系统中使用 时，会出现表名无效的错误提示，而加入原来的用户名，又会出现用户已经存在的错误， </p>
<p>所以最好的方法就是修改成dbo： </p>
<p>怎么样把sql server 2000的用户表的所有者，改成dbo，而不是用户名。 </p>
<p>(附修改存储过程的方法，在查询器中执行：<br>EXEC sp_changeobjectowner 'usera.hishop_creatorder', 'dbo')，就把 usera的存储过程改为dbo所有了。 </p>
<p>可以使用 sp_changedbowner 更改数据库的所有者。</p>
<p>方法一：右键点击该表-》设计表，在上面的一排小图标中，点最后一个&#8220;条件约束&#8221;，点&#8220;表&#8221;页，在里面更改所有者。(若没有条件约束的小图标，可以点右键，能看到一个&#8220;check约束&#8221;的选项) </p>
<p>方法二：利用脚本直接执行，用系统帐号或者超户登陆到该数据库，然后执行下面语句： </p>
<p>sp_configure 'allow updates','1'<br>go<br>reconfigure with override<br>go<br>update sysobjects set uid=1 where uid&lt;&gt;1 <br>go<br>sp_configure 'allow updates','0'<br>go<br>reconfigure with override </p>
<p>第二种方法只能使用一次，第二次使用会出错。<br></p>
<p><br>sql server 2005</p>
<div class=partbody>
<p>1。先说说如何在SQL 2005中批量修改存储过程的架构。</p>
<p>执行以下SQL，将执行结果拷贝出来，批量执行既可。</p>
<p><font style="BACKGROUND-COLOR: #c0c0c0"><font color=#0000ff>SELECT<font size=2> </font><font size=2>'ALTER SCHEMA dbo TRANSFER '</font><font size=2> </font><font size=2>+</font><font size=2> s</font><font size=2>.</font><font size=2>Name</font><font size=2> </font><font size=2>+</font><font size=2> </font><font size=2>'.'</font><font size=2> </font><font size=2>+</font><font size=2> p</font><font size=2>.</font><font size=2>Name</font><font size=2> </font></font></font></p>
<p><font style="BACKGROUND-COLOR: #c0c0c0"><font color=#0000ff><font size=2>FROM</font><font size=2> </font><font size=2>sys.Procedures</font><font size=2> p </font><font size=2>INNER</font><font size=2> </font><font size=2>JOIN</font><font size=2> </font><font size=2>sys.Schemas</font><font size=2> s </font><font size=2>on</font><font size=2> p</font><font size=2>.</font><font size=2>schema_id </font><font size=2>=</font><font size=2> s</font><font size=2>.</font><font size=2>schema_id </font></font></font></p>
<p><font style="BACKGROUND-COLOR: #c0c0c0"><font color=#0000ff><font size=2>WHERE</font><font size=2> s</font><font size=2>.</font><font size=2>Name</font><font size=2> </font><font size=2>=</font><font size=2> </font><font size=2>'旧的架构名称'</font></font></font></p>
<p>2。再说说如何在SQL 2005中批量修改表的架构。</p>
<p>执行以下SQL，将执行结果拷贝出来，批量执行既可。</p>
<p><font style="BACKGROUND-COLOR: #c0c0c0" color=#993366>declare @name sysname<br>declare csr1 cursor<br>for <br>select TABLE_NAME from INFORMATION_SCHEMA.TABLES<br>open csr1</font></p>
<p><font style="BACKGROUND-COLOR: #c0c0c0"><font color=#993366>FETCH NEXT FROM csr1 INTO @name<br>while (@@FETCH_STATUS=0)<br>BEGIN<br>SET @name='<font size=2>旧的架构名称.' + @name</font></font></font></p>
<p><font style="BACKGROUND-COLOR: #c0c0c0" color=#993366>print 'ALTER SCHEMA dbo TRANSFER ' + @name<br>fetch next from csr1 into @name<br>END<br>CLOSE csr1<br>DEALLOCATE csr1</font></p>
<p>&nbsp;</p>
</div>
<img src ="http://www.cnitblog.com/yhf119/aggbug/36158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yhf119/" target="_blank">杨</a> 2007-11-12 09:02 <a href="http://www.cnitblog.com/yhf119/archive/2007/11/12/36158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>