<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_天山寒雪</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/47051/rss</id><updated>2011-08-26T05:07:24Z</updated><author><name>qinhaijun</name><uri>http://www.cnblogs.com/qinhaijun/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qinhaijun/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/47051/rss"/><entry><id>http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154278.html</id><title type="text">&#xD;
&#xD;
C# 硬件码 获取电脑配置信息</title><summary type="text"/><published>2011-08-26T05:07:00Z</published><updated>2011-08-26T05:07:00Z</updated><author><name>qinhaijun</name><uri>http://www.cnblogs.com/qinhaijun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154278.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154278.html"/><content type="html">&lt;div id="blog_text"  &gt;&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;class ActiveX&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static string hardCode()&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string temp = CpuID() + "_" + DiskID() + "_" + TotalPhysicalMemory() + "_" + SystemType() + "_" + MacAddress() ;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = temp.ToUpper();&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string result = Md5Create.getMd5Hash(temp);&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static string CpuID()&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string cpuID = "";&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ManagementClass mc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ManagementObjectCollection moc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc = new ManagementClass("Win32_Processor");&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moc = mc.GetInstances();&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (ManagementObject mo in moc)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpuID = mo.Properties["ProcessorId"].Value.ToString();&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogWrite.Write("ActiveX.CpuID:"+ex.Message);&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpuID = "unknow";&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return cpuID;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static string MacAddress()&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string macAddress = "";&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ManagementClass mc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ManagementObjectCollection moc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc = new ManagementClass("Win32_NetworkAdapterConfiguration");&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moc = mc.GetInstances();&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (ManagementObject mo in moc)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((bool)mo["IPEnabled"] == true)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; macAddress = mo["MacAddress"].ToString();&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return macAddress;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogWrite.Write("ActiveX.MacAddress:" + ex.Message);&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; macAddress = "unknow";&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return macAddress;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static string DiskID()&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string diskID = "";&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ManagementClass mc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ManagementObjectCollection moc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc = new ManagementClass("Win32_DiskDrive");&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moc = mc.GetInstances();&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (ManagementObject mo in moc)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; diskID = mo.Properties["Model"].Value.ToString();&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogWrite.Write("ActiveX.DiskID:" + ex.Message);&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; diskID = "unknow";&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return diskID;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static string SystemType()&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string systemType = "";&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ManagementClass mc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ManagementObjectCollection moc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc = new ManagementClass("Win32_ComputerSystem");&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moc = mc.GetInstances();&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (ManagementObject mo in moc)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; systemType = mo["SystemType"].ToString();&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogWrite.Write("ActiveX.SystemType:" + ex.Message);&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; systemType = "unknow";&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return systemType;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static string TotalPhysicalMemory()&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string totalPhysicalMemory = "";&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ManagementClass mc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ManagementObjectCollection moc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc = new ManagementClass("Win32_ComputerSystem");&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moc = mc.GetInstances();&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (ManagementObject mo in moc)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; totalPhysicalMemory = mo["TotalPhysicalMemory"].ToString();&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogWrite.Write("ActiveX.TotalPhysicalMemory:" + ex.Message);&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; totalPhysicalMemory = "unknow";&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mc = null;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return totalPhysicalMemory;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/qinhaijun/aggbug/2154278.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154278.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154279.html</id><title type="text">&#xD;
&#xD;
VS2010 ,WPF, 找不到 System.Web.dll， HttpUtility</title><summary type="text"/><published>2011-08-26T05:07:00Z</published><updated>2011-08-26T05:07:00Z</updated><author><name>qinhaijun</name><uri>http://www.cnblogs.com/qinhaijun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154279.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154279.html"/><content type="html">&lt;div id="blog_text"  &gt;&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;VS2010对于非Web程序，默认采用了Client Profile，并对桌面程序作了优化，其中之一就是移除了一些不用的framework component。我切换到完整版本的.Net Framework 4之后，就一切正常了。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;项目----》属性&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&lt;span&gt;&lt;img  border="0" src="http://hiphotos.baidu.com/tshxsky/pic/item/8e147b8241fbdec4f703a630.jpg" small="0"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/qinhaijun/aggbug/2154279.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154279.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154280.html</id><title type="text">&#xD;
&#xD;
PC服务器实现海量数据存取的方法</title><summary type="text"/><published>2011-08-26T05:07:00Z</published><updated>2011-08-26T05:07:00Z</updated><author><name>qinhaijun</name><uri>http://www.cnblogs.com/qinhaijun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154280.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154280.html"/><content type="html">&lt;div id="blog_text"  &gt;&lt;p&gt;管理信息系统(MIS)/企业资源计划(ERP)最大的特点和优点是数据积累。数据的积累不仅是对业务活动过程的记录，及时反映业务经营状况，还能从中归纳出有规律的信息，对以后的业务活动起到很好的指导作用，并且能够规范经营管理活动，提升管理水平。然而，随着数据的积累，数据表(Table)和数据库(DataBase)变得日渐庞大。数据访问时，随着检索范围加大，查询效率会显著降低，因此系统处理和响应的速度越来越慢。当系统响应慢到一定程度时，数据处理的时效性就不能满足要求，甚至导致数据丢失。同时，用户也将失去等待的耐心而逐步放弃使用系统，使系统失去存在的意义。因此，对信息管理系统来说，随着使用时间的增长，如何保证系统响应速度保持在用户可以接受的范围内，是MIS系统设计开发中普遍面临的技术难题。 &lt;/p&gt;&#xD;
&lt;p&gt;当前，很多管理信息系统开发者为了回避这个技术难题，普遍要求使用单位配置硬件层面上数据存取能力极强的小型机。这样一来，使用单位将要增加几十万乃至几百万元的初始硬件投资，而且配套的软件平台投资和后继的培训、使用、维护成本也将大大增加。本文根据作者多年管理信息系统开发的研究和实践经验，提出一种应用PC服务器实现海量数据存取的方法，通过改进和优化数据的存取解决海量数据存取的技术难题，为信息系统使用单位节约投资和维护成本。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 16px"&gt;　　1、数据处理环境&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;数据处理环境为某大型商厦的企业资源计划管理系统，该系统有近300个使用站点，每年的业务数据量约2G。该企业资源计划管理系统采用HPLH6000 PC服务器(双PIIl550 Intel至强CPU、1G内存、Raid5磁盘阵列)，网络操作系统采用WINNT4．0，数据库管理软件采用Microsoft SQL Server2000。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 16px"&gt;　　2、PC服务器实现海量数据存取的方法&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;PC服务器实现海量数据存取的方法主要包括数据分类、数据分割、数据处理算法和数据访问4个部分。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;　　2.1数据分类&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;为了减少数据的冗余，防止存储异常。提高处理速度，在开发过程中，针对各类管理对象都进行编号处理，并保存在不同的“对象定义表”中。同类对象放在同一个定义表中，编号不重复，并用不同的字段定义管理对象的属性。记录和加工业务数据时，只处理对象编号和业务数据，把结果放在不同的“业务数据表”中。在进行数据检索和存取时，通过数据视图(VIEW)或直接进行“对象定义表”和“业务数据表”的联接。根据业务数据被加工汇总的程度，又进一步把“业务数据表”划分为不同的“原始业务数据表”、“按日汇总业务数据表”、“按月汇总业务数据表”。经过记录和加工的业务数据，有部分是用来指导和规范业务活动的，把这部分数据分别存放在不同的“业务管理表”中。数据分类结构如图1所示。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;a href="http://hi.baidu.com/pc_server/Article75539.htm"&gt;&lt;img style="WIDTH: 281px; HEIGHT: 188px" src="http://hiphotos.baidu.com/tshxsky/pic/item/5b10b8543d6d2b04564e00c7.jpg" width="281" height="188"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;　　2.2数据分割&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在使用系统过程中，用户最关心的数据是当月的业务数据，其次是当年的业务数据，再次是往年的业务数据。查询业务数据的频率从高到低排列，依次为当月、当年、往年，而且查询的时间段极少跨年度。根据这个规律，在数据库设计中，把“业务数据表”按年度分割存放，每年的“业务数据表”放在一个数据库(“年度数据库”)中，同时对当月的“业务数据表”另外放在一个数据库(“当前数据库”)中，这就保证了每个数据库和每个表的内容不会无限增长。&lt;/p&gt;&#xD;
&lt;p&gt;“对象定义表”中的各个字段值具有相对稳定的特点，因此也把它们按年度来保存。每个“年度数据库”中保存一份对应的“对象定义表”，当年的“对象定义表”保存在“当前数据库”中。&lt;/p&gt;&#xD;
&lt;p&gt;“业务管理表”存放的是一些规则和规律，数据量不大，但是要求被查询时能迅速返回结果，而且这些规则和规律只对正在发生和将来发生的业务起作用，因此把它们放在“当前数据库”中。数据分割存放结构如图2所示。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;a href="http://hi.baidu.com/pc_server/Article75539.htm"&gt;&lt;img style="WIDTH: 358px; HEIGHT: 220px" src="http://hiphotos.baidu.com/tshxsky/pic/item/99202c5460006408d10906c7.jpg" width="358" height="220"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;　　2.3数据加工和保存&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在实际的数据访问中，作业层工作人员最关注原始数据和流水清单数据，而管理层和决策层人员最关注按日或按月汇总的业务数据报表。大部分用于管理和指导的数据也是要求按日或按月汇总。因此，很多数据不是需要使用时才从原始数据来直接汇总加工，而是可以采用“以空间换时间”的原则，在适当的时间，事先进行数据的按日或按月汇总，生成对应的汇总数据表。利用这种规律，在受理作业层工作人员对原始数据和流水清单的要求时，可以直接从“原始业务数据表”中访问检索；同时，在受理管理层和决策层人员的业务数据报表要求时，避免了对大量原始数据的直接访问检索和加工汇总，可以针对性地从“按日汇总业务数据表”或“按月汇总业务数据表”中的少量数据中检索汇总，这样大大地提高了系统响应的速度和效率。&lt;/p&gt;&#xD;
&lt;p&gt;具体的数据处理算法如下：&lt;/p&gt;&#xD;
&lt;p&gt;每天新增的管理对象和对管理对象的修改直接保存在“当前数据库”的各个“对象定义表”中。在每日规定的结算时间或业务活动结束后，进行每日数据结算。对原始业务数据进行加工整理，生成各类按日汇总业务数据，保存在“当前数据库”的各个“按日汇总业务数据表”中，同时更新“业务管理表”。在每月月底的月报截止日，进行月份数据结算和转存。把当月的“业务数据表”分类汇总，生成按月汇总业务数据，保存在“当年数据库”的各个“按月汇总业务数据表”中。把“当前数据库”中的各个“按日汇总业务数据表”转存到“当年数据库”的对应“按日汇总业务数据表”中，并且清空“当前数据库”中的各个“按日汇总业务数据表”。农每年年底，进行年度数据转存。把“当前数据痒”中的各个“对象定义表”复制一份到“当年数据库”中，生成新一年的数据库表结构。将“当前数据库”作为新一年的“当月数据库”，删除“对象定义表”中已经淘汰的管理对象，整理“业务管理表”。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;　　2.4数据访问&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;因数据是按年度存放的，在访问数据时，为使处理简单，约定访问的时间段范围不能跨年度。这样张访问数据前，首先判断要访问哪类数据。若为管理数据，则直接从当月数据库中的“对象定义表”和“业务管理表”中查找。若为定义数据或业务数据，则调用一个公用存储过程，输人参数为访问时间段的起始日期和截止日期，返回“对象定义表”和“业务数据表”所在的数据库名(若访问时间段正好跨当年当月和当年往月时，则要另外返回一标记说明业务数据跨数据库)。而后，在指定的数据库中访问对应的数据表。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 16px"&gt;　　3、结束语&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本文通过改进和优化数据分类、数据分割、数据加工和保存、数据访问等一系列措施，仅利用常用的HP LH6000 PC服务器就成功地实现了禁大型商厦企业资源计划管理系统海量数据的存取。目前该系统已经运行五年多，使用该系统汇总商厦一级部门一年的业务数据只须几十秒钟，绝大多数报表能在十几秒内完成，单据录入也没有停顿现象，较好地解决了使用PC服务器实现海量数据存取的技术难题，既避免了困扰了困扰用户的系统越用越慢现象，又能够将数据方便的按年度备份归档，提高了系统的性能和可用性，使系统处理和响应速度大大加快，保障了系统的良好性能。同时还节省了大量的硬件投资和日后的维护费用。这些改进的方法和措施，可以为其他管理信息系统设计提供较好的借鉴作用。&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/qinhaijun/aggbug/2154280.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154280.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154281.html</id><title type="text">&#xD;
&#xD;
dataGridView 全选 需要注意的问题</title><summary type="text"/><published>2011-08-26T05:07:00Z</published><updated>2011-08-26T05:07:00Z</updated><author><name>qinhaijun</name><uri>http://www.cnblogs.com/qinhaijun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154281.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154281.html"/><content type="html">&lt;div id="blog_text"  &gt;&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;private void checkBox1_CheckedChanged(object sender, EventArgs e)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (checkBox1.Checked == true)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; dataGridView1.Rows.Count; i++)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.dataGridView1.Rows[i].Cells[0].Value = true;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int j = 0; j &amp;lt; dataGridView1.Rows.Count; j++)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.dataGridView1.Rows[j].Cells[0].Value = false;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void button10_Click(object sender, EventArgs e)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string str = "";&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; dataGridView1.Rows.Count; i++)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(Convert.ToBoolean(dataGridView1.Rows[i].Cells[0].Value))&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += dataGridView1.Rows[i].Cells[1].Value + ",";&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show(str);&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;注意：1，标题栏 添加全选，需要重写，非常繁琐。网上文章也不是很多。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;2，dataGridView1.Rows[i].Cells[0].Value 得到是那一列的值，还是 那一列中的 Checkbox的值 ？不需要考虑&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;3，添加的 Checkbox 需要做什么设置 ？ 需要设置TrueValue，FalseValue ？ 不需要设置&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;4，添加的checkbox 那列，只读属性一定要去掉，不然选中之后，失去焦点就还原了。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;5，checkbox 那列，需要设置宽度吗？ 用户点击是文本区域还是Checkbox ？ 没有要求。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;6，dataGridView1.Rows[i].Cells[0].Value 不要轻易的把这个值 转换成String类型。 因为他有 N 种情况。通过 Convert.ToBoolean&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;强制类型转换，最终只有2种状态 True，False。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;7，批量删除 ，用 in&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string orderid="11,22,33,55";&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlParameter[] parms = {new SqlParameter("id",orderid) };&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;另外一种删除 delete from aa where&lt;/span&gt;&lt;a href="mailto:id=@id1"&gt;&lt;span style="FONT-SIZE: 16px"&gt;id=@id1&lt;/span&gt;&lt;/a&gt; &lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;/r/n delete from aa where&lt;/span&gt;&lt;a href="mailto:id=@di2"&gt;&lt;span style="FONT-SIZE: 16px"&gt;id=@di2&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;SqlParameter[] parms = {new SqlParameter("id1","11") ;new SqlParameter("id2","22") };&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;8, 上面写了那么多，其实对我现在遇到的问题 没有任何帮助。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;如果是新项目，可以用上面的。老项目（不停的炒现饭那种），可能会遇到&amp;nbsp; 选中的值 dataGridView1.Rows[i].Cells[0].Value=“”&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;这样转 BOOL 类型就会报错。 目前还没有知道什么原因，临时解决办法&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;首先 &lt;span style="FONT-SIZE: 16px"&gt;gridViewA&lt;/span&gt; 属性需要设置&amp;nbsp; &lt;span style="FONT-SIZE: 16px"&gt;TrueValue=1，FalseValue=0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 然后取值如下&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;if (gridViewA.Rows[i].Cells[0].Value != null)&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (gridViewA.Rows[i].Cells[0].Value.ToString() == "1" || gridViewA.Rows[i].Cells[0].Value.ToString()=="True")&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id += gridViewA.Rows[i].Cells[1].Value + ",";&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/qinhaijun/aggbug/2154281.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154281.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154282.html</id><title type="text">&#xD;
&#xD;
[转]Js实现Repeater全选/反选 功能 终极解决方案</title><summary type="text"/><published>2011-08-26T05:07:00Z</published><updated>2011-08-26T05:07:00Z</updated><author><name>qinhaijun</name><uri>http://www.cnblogs.com/qinhaijun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154282.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154282.html"/><content type="html">&lt;div id="blog_text"  &gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;h1 &gt;&lt;span style="FONT-SIZE: 16px"&gt;JavaScript代码：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;function&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;CheckAll(e,itemname){&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;var&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;&amp;nbsp;aa&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;span style="FONT-SIZE: 16px"&gt;document.getElementsByName(itemname);&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;if&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;(aa&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;==&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;undefined)&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;return&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;span style="FONT-SIZE: 16px"&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;for&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;var&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;&amp;nbsp;i&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;aa.length;&amp;nbsp;i&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;++&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;)aa[i].checked&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;e.checked;&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;在HeaderTemplate中或者在Repeater之外直接添加全选的一个CheckBox：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000; FONT-SIZE: 16px"&gt;input&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #ff0000; FONT-SIZE: 16px"&gt;name&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;="chkall"&lt;/span&gt;&lt;span style="COLOR: #ff0000; FONT-SIZE: 16px"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;="1"&lt;/span&gt;&lt;span style="COLOR: #ff0000; FONT-SIZE: 16px"&gt;&amp;nbsp;type&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;="checkbox"&lt;/span&gt;&lt;span style="COLOR: #ff0000; FONT-SIZE: 16px"&gt;&amp;nbsp;onclick&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;="CheckAll(this,'Item')"&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;在ItemTemplate中绑定的时候只需要给Input设置目前行的ID编号等即可：&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000; FONT-SIZE: 16px"&gt;input&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #ff0000; FONT-SIZE: 16px"&gt;name&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;="Item"&lt;/span&gt;&lt;span style="COLOR: #ff0000; FONT-SIZE: 16px"&gt;&amp;nbsp;type&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;="checkbox"&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;测试，运行，搞定。&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;如果需要获取到 哪些ItemTemplate的Checkbox选中的话，那么在ItemTemplate中&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000; FONT-SIZE: 16px"&gt;input&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #ff0000; FONT-SIZE: 16px"&gt;name&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;="Item"&lt;/span&gt;&lt;span style="COLOR: #ff0000; FONT-SIZE: 16px"&gt;&amp;nbsp;type&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;="checkbox"&lt;/span&gt;&lt;span style="COLOR: #ff0000; FONT-SIZE: 16px"&gt;&amp;nbsp;value&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;='&amp;lt;%#Eval("MessageID")%&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;'/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;在后台CS代码中，获取Item的值的简单方法：&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;foreach&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;&amp;nbsp;(var&amp;nbsp;item&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;in&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;&amp;nbsp;Request.Form[&lt;/span&gt;&lt;span style="COLOR: #800000; FONT-SIZE: 16px"&gt;"&lt;/span&gt;&lt;span style="COLOR: #800000; FONT-SIZE: 16px"&gt;Item&lt;/span&gt;&lt;span style="COLOR: #800000; FONT-SIZE: 16px"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;].Split(&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff; FONT-SIZE: 16px"&gt;char&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;[]&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #800000; FONT-SIZE: 16px"&gt;'&lt;/span&gt;&lt;span style="COLOR: #800000; FONT-SIZE: 16px"&gt;,&lt;/span&gt;&lt;span style="COLOR: #800000; FONT-SIZE: 16px"&gt;'&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;}))&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Write(item.ToString()&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: #000000; FONT-SIZE: 16px"&gt;+&lt;/span&gt;&lt;span style="COLOR: #800000; FONT-SIZE: 16px"&gt;"&lt;/span&gt;&lt;span style="COLOR: #800000; FONT-SIZE: 16px"&gt;&amp;lt;bR/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #800000; FONT-SIZE: 16px"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;span style="FONT-SIZE: 16px"&gt;);&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/qinhaijun/aggbug/2154282.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154282.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154283.html</id><title type="text">&#xD;
&#xD;
Winform C# 右下角弹出框 类似 MSN QQ 提醒</title><summary type="text"/><published>2011-08-26T05:07:00Z</published><updated>2011-08-26T05:07:00Z</updated><author><name>qinhaijun</name><uri>http://www.cnblogs.com/qinhaijun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154283.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154283.html"/><content type="html">&lt;div id="blog_text"  &gt;&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&lt;span&gt;&lt;img  border="0" src="http://hiphotos.baidu.com/tshxsky/pic/item/d957f8233590150093580773.jpg" small="0"&gt;&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;原文地址：&lt;/span&gt;&lt;a href="http://www.codeproject.com/KB/miscctrl/taskbarnotifier.aspx"&gt;&lt;span style="FONT-SIZE: 16px"&gt;http://www.codeproject.com/KB/miscctrl/taskbarnotifier.aspx&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;直接运行DEMO 可以看到效果&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;调用也非常简单， 初次尝试肯定会报错。&lt;/span&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;无法在类 "" 中找到资源 解决方法&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;今天做程序时，代码中写了个引用资源文件bmp的位图资源，结果出错，后来找到个解决方法&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;在解决方案资源管理器中选中项目需要的所用到的资源文件，查看属性，将生成操作设置为：“嵌入的资源”（必须的）；复制到输出目录设为“始终复制”或者“较新则复制”&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;网上找到的解决办法，但总觉得怪怪的。&lt;/span&gt;&lt;br&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/qinhaijun/aggbug/2154283.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154283.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154284.html</id><title type="text">&#xD;
&#xD;
查询性能优化 SQL Server 2005</title><summary type="text"/><published>2011-08-26T05:07:00Z</published><updated>2011-08-26T05:07:00Z</updated><author><name>qinhaijun</name><uri>http://www.cnblogs.com/qinhaijun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154284.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154284.html"/><content type="html">&lt;div id="blog_text"  &gt;&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;您可以通过优化所用查询来提高 SQL Server 2005 Compact Edition (SQL Server Compact Edition) 应用程序性能。下列各节概述了可以用来优化查询性能的方法。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;优化索引&lt;/span&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;创建有用的索引是提高查询性能的最重要方法之一。有用的索引可帮助减少在查找数据时所需使用的磁盘 I/O 操作数和系统资源量。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;若要创建有用的索引，您必须了解下列知识：数据的使用方式，查询的类型及其运行频率，以及查询处理器如何使用索引快速查找数据。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;当选择要创建何种索引时，请检查您的关键查询，其性能将对用户体验产生极大的影响。需要创建专门辅助这些查询的索引。在添加索引后，重新运行查询以查看是否提高了性能。如果未提高，则删除索引。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;与大多数性能优化方法一样，此方法也有一些缺点。例如，使用较多索引时，SELECT 查询的运行速度很可能会更快。但是，DML（INSERT、UPDATE 和 DELETE）操作的速度将显著减慢，因为对于每个操作都必须维护更多的索引。因此，如果您的查询主要包含 SELECT 语句，则使用较多的索引是非常有帮助的。如果您的应用程序需要执行许多 DML 操作，就有必要控制创建的索引数。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;SQL Server Compact Edition 包括对显示计划的支持，显示计划可以帮助评估和优化查询。除了 SQL Server Compact Edition 使用的只是一部分运算符之外，SQL Server Compact Edition 使用与 SQL Server 2005 相同的显示计划架构。有关详细信息，请参阅位于 &lt;a href="http://go.microsoft.com/fwlink/?LinkId=38029"&gt;http://schemas.microsoft.com/sqlserver/2004/07/showplan/&lt;/a&gt; 的 Microsoft 显示计划架构。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;下面几节介绍有关创建有用索引的其他信息。&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;创建高选择性索引&lt;/span&gt;&#xD;
&lt;div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;对关键查询的 WHERE 子句中使用的列创建索引，通常会提高性能。但是，这取决于索引选择性的高低。选择性是指符合条件的行数与总行数之比。如果比率较低，索引就是高选择性的。它可以筛选掉大多数行，从而大大减小结果集的大小。因此，这样的索引就是要创建的有用索引。与之相比，选择性低的索引就没有那么有用。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;唯一索引具有最高的选择性。只有一行可以匹配，这对只希望返回一行的查询是最有用的。例如，唯一 ID 列的索引可帮助您快速查找特定的行。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;通过对 SQL Server Compact Edition 表运行 sp_show_statistics 存储过程，您可以评估索引的选择性。例如，若要评估两个列（“Customer ID”和“Ship Via”）的选择性，可以运行下列存储过程：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;sp_show_statistics_steps 'orders', 'customer id';&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;RANGE_HI_KEY RANGE_ROWS EQ_ROWS DISTINCT_RANGE_ROWS&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;ALFKI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;ANATR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;ANTON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  13&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;AROUT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;BERGS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  23&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;BLAUS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;BLONP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;BOLID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;&amp;nbsp;  7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;BONAP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;&amp;nbsp;  19&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;BOTTM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;BSBEV&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;CACTU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;CENTC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;CHOPS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;COMMI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;CONSH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;DRACD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;DUMON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;EASTC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  13&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;ERNSH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  33&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;(90 rows affected)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;和&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;sp_show_statistics_steps 'orders', 'reference3';&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;RANGE_HI_KEY RANGE_ROWS EQ_ROWS DISTINCT_RANGE_ROWS&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  320&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  425&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    333&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;(3 rows affected)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;结果表明“Customer ID”列的重复程度更低。这意味着其索引的选择性将比“Ship Via”列的索引的选择性要高。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;有关使用这些存储过程的详细信息，请参阅 &lt;a href="http://msdn.microsoft.com/zh-cn/library/ms174108(v=SQL.90).aspx"&gt;sp_show_statistics (SQL Server Compact Edition)&lt;/a&gt;、&lt;a href="http://msdn.microsoft.com/zh-cn/library/ms174851(v=SQL.90).aspx"&gt;sp_show_statistics_steps (SQL Server Compact Edition)&lt;/a&gt; 和 &lt;a href="http://msdn.microsoft.com/zh-cn/library/ms173296(v=SQL.90).aspx"&gt;sp_show_statistics_columns (SQL Server Compact Edition)&lt;/a&gt;。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;span style="FONT-SIZE: 16px"&gt;创建多列索引&lt;/span&gt;&#xD;
&lt;div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;多列索引是单列索引的自然扩展。对于计算与预先指定的一组键列匹配的筛选表达式，多列索引是非常有用的。例如，组合索引 CREATE INDEX Idx_Emp_Name ON Employees ("Last Name" ASC, "First Name" ASC) 有助于计算下列查询：&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;... WHERE "Last Name" = 'Doe'&lt;/span&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;但是，它对下面的查询是没有用的：&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;... WHERE "First Name" = 'John'&lt;/span&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;在创建多列查询时，应该将选择性最高的列放在键中的最左端。这样，在匹配多个表达式时，就可以使索引的选择性更高。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;span style="FONT-SIZE: 16px"&gt;避免对小表创建索引&lt;/span&gt;&#xD;
&lt;div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;小表是指内容只适合一个或几个数据页的表。因为进行表扫描通常效率更高，所以要避免对非常小的表创建索引。这会节省加载和处理索引页的开销。不对非常小的表创建索引，可以避免优化器选择此类索引。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;SQL Server Compact Edition 按 4 Kb 一页来存储数据。使用以下公式可以计算出近似的页数，尽管实际的页数由于存储引擎开销的原因可能会稍微多一些。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;lt;列的总大小（字节）&amp;gt; * &amp;lt;行数&amp;gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;lt;页数&amp;gt; = -----------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;4096&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;例如，假设一个表的架构如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;订单 ID&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;INTEGER（4 字节）&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;产品 ID&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;INTEGER（4 字节）&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;单价&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;MONEY（8 字节）&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;数量&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;SMALLINT（2 字节）&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;折扣&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;REAL（4 字节）&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;此表包含 2820 行。按照公式，存储该表数据需要大约 16 页：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&amp;lt;页数&amp;gt; = ((4 + 4 + 8 + 2 + 4) * 2820) / 4096 = 15.15 页&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;选择要创建索引的对象&lt;/span&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;建议始终对主键创建索引。另外，对外键创建索引通常也非常有用。这是因为通常使用主键和外键来联接表。创建这些键的索引后，优化器可以使用效率更高的索引联接算法。如果您的查询使用其他列来联接表，由于相同的原因，对这些列创建索引通常也非常有用。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;在创建主键和外键的约束后，SQL Server Compact Edition 将自动为其创建索引并在优化查询时加以利用。请记住使用较小的主键和外键。这样，联接的运行速度会更快。&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;与筛选子句一起使用索引&lt;/span&gt;&#xD;
&lt;div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;索引可以用于提高某些类型的筛选子句的计算速度。虽然所有筛选子句都会减小查询的最终结果集，但是某些筛选子句还可以帮助减小所需扫描的数据量。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;搜索参数 (SARG) 可指定精确匹配、值的范围或由 AND 联接的两项或多项的连接，因此能够限制搜索范围。搜索参数采用以下格式之一：&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;列 运算符 &amp;lt;常量或变量&amp;gt;&amp;lt;常量或变量&amp;gt; 运算符 列&lt;/span&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;SARG 运算符包括 =、&amp;gt;、&amp;lt;、&amp;gt;=、&amp;lt;=、IN、BETWEEN，有时还包括 LIKE（在进行前缀匹配时，如 LIKE 'John%'）。SARG 可以包括由 AND 联接的多个条件。SARG 还可以是匹配特定值的查询，例如：&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;"Customer ID" = 'ANTON'&lt;/span&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;SARG 也可以是匹配一定范围的值的查询，例如：&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;"Order Date" &amp;gt; '1/1/2002'&lt;/span&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;不使用 SARG 运算符的表达式无法提高性能，因为 SQL Server Compact Edition 查询处理器必须评估所有行，以确定是否满足筛选子句。因此，对于不使用 SARG 运算符的表达式，索引是没有用的。非 SARG 运算符包括 NOT、&amp;lt;&amp;gt;、NOT EXISTS、NOT IN、NOT LIKE 和内部函数。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;使用查询优化器&lt;/span&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;在确定基表的访问方法时，SQL Server Compact Edition 优化器将确定是否存在 SARG 子句的索引。如果存在索引，优化器将通过计算返回多少行来评估索引。然后，优化器会估计通过使用索引查找符合条件的行的开销。如果使用索引的开销比表扫描的开销低，优化器将选择索引访问。如果在 SARG 中使用索引的第一列或预先指定的一组列，且 SARG 指定了限制搜索范围的下限、上限或同时执行了这两者，则索引很可能是有用的。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;了解响应时间与总时间&lt;/span&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;响应时间是查询返回第一条记录所用的时间。总时间是查询返回所有记录所用的时间。对于交互式应用程序，响应时间是很重要的，因为这决定了用户要等待多长时间，才能通过看到第一条返回记录确定查询正在处理中。对于批处理应用程序，总时间反映了总体吞吐量。您必须确定应用程序和查询的性能标准，然后才能相应地进行设计。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;例如，假设查询返回 100 条记录，前五条记录用来填充一个列表。在此情况下，您不关心返回全部 100 条记录所用的时间。相反，您只希望查询快速返回前几条记录，以便填充列表。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;可以执行许多查询操作，而无需存储中间结果。这些操作称为管道操作。管道操作的示例是映射、选择和联接。通过这些操作执行的查询可以立即返回结果。其他操作（如 SORT 和 GROUP-BY）需要使用所有输入信息，才可以将结果返回到父操作。这就是我们所说的要求具体化的操作。由于具体化的原因，通过这些操作执行的查询通常会有初始延迟。在此初始延迟之后，此类查询通常也可以很快地返回记录。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;具有响应时间要求的查询应避免具体化。例如，与使用排序相比，使用索引执行 ORDER-BY 的响应时间更短。下一节将对此进行详细说明。&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;对 ORDER-BY/GROUP-BY/DISTINCT 列创建索引以缩短响应时间&lt;/span&gt;&#xD;
&lt;div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;ORDER-BY、GROUP-BY 和 DISTINCT 操作都是排序类型的操作。SQL Server Compact Edition 查询处理器使用两种方法进行排序。如果记录已经按索引进行排序，则处理器只使用索引。否则，处理器必须先使用临时工作表对记录进行排序。在 CPU 较慢并且内存较低的设备上，这样的预先排序会造成显著的初始延迟，因此，在响应时间比较重要时，应该避免预先排序。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;在使用多列索引的情况下，为了使 ORDER-BY 或 GROUP-BY 处理特定索引，ORDER-BY 或 GROUP-BY 列必须与预先指定的一组索引列匹配，而且顺序要完全相同。例如，索引 CREATE INDEX Emp_Name ON Employees ("Last Name" ASC, "First Name" ASC) 有助于优化下列查询：&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;... ORDER BY / GROUP BY "Last Name" ...&lt;/span&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;但对下列查询，它并没有帮助：&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;... ORDER BY / GROUP BY "First Name" ...&lt;/span&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;为了使 DISTINCT 操作处理多列索引，映射列表必须与所有索引列匹配，尽管顺序不必完全相同。上面的索引有助于优化下列查询：&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;... DISTINCT "Last Name", "First Name" ...&lt;/span&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;但对下列查询，它并没有帮助：&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;... DISTINCT "First Name" ...&lt;/span&gt;&#xD;
&lt;div&gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;&lt;span style="FONT-SIZE: 16px"&gt;如果您的查询始终返回唯一行，请不要指定 DISTINCT 关键字，因为它只会增加开销。&lt;/span&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;重写子查询以使用 JOIN&lt;/span&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;有时可以重写子查询以使用 JOIN，从而提高性能。创建 JOIN 的好处是，可以按与查询所定义顺序不同的顺序评估表。使用子查询的好处是，通常不必扫描子查询中的所有行就可以计算子查询表达式。例如，EXISTS 子查询可以在找到第一个符合条件的行时就返回 TRUE。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;&lt;span style="FONT-SIZE: 16px"&gt;SQL Server Compact Edition 查询处理器始终会重写 IN 子查询以使用 JOIN。对包含 IN 子查询子句的查询，不必使用此方法。&lt;/span&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;例如，若要确定包含至少一个折扣率大于或等于 25% 的项的所有订单，可以使用下面的 EXISTS 子查询：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;SELECT "Order ID" FROM Orders O&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;WHERE EXISTS (SELECT "Order ID"&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;FROM "Order Details" OD&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;WHERE O."Order ID" = OD."Order ID"&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;AND Discount &amp;gt;= 0.25)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;您也可以使用 JOIN 对其进行重写：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;SELECT DISTINCT O."Order ID" FROM Orders O INNER JOIN "Order Details"&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;OD ON O."Order ID" = OD."Order ID" WHERE Discount &amp;gt;= 0.25&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;使用 Outer JOIN 进行限制&lt;/span&gt;&#xD;
&lt;div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;OUTER JOIN 与 INNER JOIN 的处理方式是不同的：对于 INNER JOIN 表，优化器会尝试重新排列联接顺序，而对于 OUTER JOIN 表则不会。外部表（LEFT OUTER JOIN 中的左表和 RIGHT OUTER JOIN 中的右表）将首先访问，然后才会访问内部表。这一固定的联接顺序可能会导致执行计划不能达到最优。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;&lt;span style="FONT-SIZE: 16px"&gt;SQL Server Compact Edition 查询处理器假定 INNER JOIN 包括的列上有索引（由用户或数据库创建）。&lt;/span&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;使用参数化查询&lt;/span&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;如果应用程序运行的一系列查询仅有一些常量是不同的，则可以通过使用参数化查询来提高性能。例如，若要按不同的客户返回订单，可以运行下面的查询：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;SELECT "Customer ID" FROM Orders WHERE "Order ID" = ?&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;通过只编译一次查询然后多次执行编译好的计划，参数化查询可以提供更好的性能。从编程上讲，必须始终保持包含缓存查询计划的命令对象。如果破坏以前的命令对象再创建新的命令对象，会破坏缓存的计划。这要求重新编译查询。如果必须交替运行多个参数化查询，则可以创建几个命令对象，每个命令对象都包含一个参数化查询的缓存执行计划。这样，就可以有效避免重新编译所有这些查询了。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&lt;span style="FONT-SIZE: 16px"&gt;仅在必要时进行查询&lt;/span&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;SQL Server Compact Edition 查询处理器是查询关系数据库中存储的数据的强大工具。但是，任何查询处理器都会造成一定程度的内部开销。在开始真正地执行计划之前，查询处理器必须编译、优化和生成执行计划。对于很快完成的简单查询，尤其是这样。因此，您自己执行查询有时可以大大提高性能。如果每一毫秒对您的关键组件都很重要，建议您考虑自己执行简单查询这一替代方法。对于复杂的大型查询，这种工作最好还是留给查询处理器去做。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;例如，假设您希望查找按订单 ID 排列的一系列订单的客户 ID。有两种方法可以实现此操作。第一种方法是对于每一次查找都执行下列步骤：&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 16px"&gt;打开 Orders 基表&lt;/span&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;或者，对于每一次查找都发出以下查询：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;SELECT "Customer ID" FROM Orders WHERE "Order ID" = &amp;lt;the specific order id&amp;gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;与手动解决方案相比，基于查询的解决方案更简单但速度更慢，因为 SQL Server Compact Edition 查询处理器需要将 SQL 声明语句转换为与手动执行时相同的三个操作。随后，这三个步骤将按顺序执行。选用哪种方法将取决于在应用程序中简易性和性能哪方面更重要。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;&lt;/span&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="FONT-SIZE: 16px"&gt;http://msdn.microsoft.com/zh-cn/library/ms172984(SQL.90).aspx&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/qinhaijun/aggbug/2154284.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154284.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154285.html</id><title type="text">&#xD;
&#xD;
22 选5 直接上数据，你懂的</title><summary type="text"/><published>2011-08-26T05:07:00Z</published><updated>2011-08-26T05:07:00Z</updated><author><name>qinhaijun</name><uri>http://www.cnblogs.com/qinhaijun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154285.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154285.html"/><content type="html">&lt;div id="blog_text"  &gt;&lt;p&gt;MATCH[0]: '&amp;gt;01 02 07 15 17&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=6764]&lt;br&gt;&#xD;
MATCH[1]: '&amp;gt;01 02 06 08 11&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=6666]&lt;br&gt;&#xD;
MATCH[2]: '&amp;gt;01 02 05 06 09&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=6519]&lt;br&gt;&#xD;
MATCH[3]: '&amp;gt;01 02 04 10 19&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=7401]&lt;br&gt;&#xD;
MATCH[4]: '&amp;gt;01 02 04 10 13&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=7107]&lt;br&gt;&#xD;
MATCH[5]: '&amp;gt;01 02 06 17 21&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=7009]&lt;br&gt;&#xD;
MATCH[6]: '&amp;gt;01 02 03 10 14&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=5938]&lt;br&gt;&#xD;
MATCH[7]: '&amp;gt;01 02 09 16 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=5890]&lt;br&gt;&#xD;
MATCH[8]: '&amp;gt;01 02 15 18 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=5746]&lt;br&gt;&#xD;
MATCH[9]: '&amp;gt;01 02 04 05 17&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=6372]&lt;br&gt;&#xD;
MATCH[10]: '&amp;gt;01 02 08 14 22&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=6274]&lt;br&gt;&#xD;
MATCH[11]: '&amp;gt;01 02 12 15 21&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=6226]&lt;br&gt;&#xD;
MATCH[12]: '&amp;gt;01 02 15 20 22&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=9753]&lt;br&gt;&#xD;
MATCH[13]: '&amp;gt;01 02 04 09 18&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=9704]&lt;br&gt;&#xD;
MATCH[14]: '&amp;gt;01 02 09 13 15&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=9214]&lt;br&gt;&#xD;
MATCH[15]: '&amp;gt;01 02 06 13 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=10292]&lt;br&gt;&#xD;
MATCH[16]: '&amp;gt;01 02 17 20 21&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=9998]&lt;br&gt;&#xD;
MATCH[17]: '&amp;gt;01 02 12 13 22&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=9802]&lt;br&gt;&#xD;
MATCH[18]: '&amp;gt;01 02 06 09 11&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=7842]&lt;br&gt;&#xD;
MATCH[19]: '&amp;gt;01 02 07 08 12&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=7597]&lt;br&gt;&#xD;
MATCH[20]: '&amp;gt;01 02 04 09 11&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=7499]&lt;br&gt;&#xD;
MATCH[21]: '&amp;gt;01 02 11 15 19&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=8528]&lt;br&gt;&#xD;
MATCH[22]: '&amp;gt;01 02 11 12 15&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=8479]&lt;br&gt;&#xD;
MATCH[23]: '&amp;gt;01 02 09 15 16&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=8332]&lt;br&gt;&#xD;
MATCH[24]: '&amp;gt;01 02 10 15 22&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=2715]&lt;br&gt;&#xD;
MATCH[25]: '&amp;gt;01 02 04 05 11&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=2621]&lt;br&gt;&#xD;
MATCH[26]: '&amp;gt;01 02 03 13 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=2198]&lt;br&gt;&#xD;
MATCH[27]: '&amp;gt;01 02 11 18 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=3091]&lt;br&gt;&#xD;
MATCH[28]: '&amp;gt;01 02 06 13 18&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=2997]&lt;br&gt;&#xD;
MATCH[29]: '&amp;gt;01 02 05 08 21&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=2950]&lt;br&gt;&#xD;
MATCH[30]: '&amp;gt;01 02 03 04 21&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=1634]&lt;br&gt;&#xD;
MATCH[31]: '&amp;gt;01 02 04 10 13&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=882]&lt;br&gt;&#xD;
MATCH[32]: '&amp;gt;01 02 12 13 19&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=647]&lt;br&gt;&#xD;
MATCH[33]: '&amp;gt;01 02 07 15 16&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=2010]&lt;br&gt;&#xD;
MATCH[34]: '&amp;gt;01 02 10 11 17&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=1869]&lt;br&gt;&#xD;
MATCH[35]: '&amp;gt;01 02 07 10 16&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=1681]&lt;br&gt;&#xD;
MATCH[36]: '&amp;gt;01 02 12 16 19&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4548]&lt;br&gt;&#xD;
MATCH[37]: '&amp;gt;01 02 04 07 17&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4454]&lt;br&gt;&#xD;
MATCH[38]: '&amp;gt;01 02 06 08 17&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4360]&lt;br&gt;&#xD;
MATCH[39]: '&amp;gt;01 02 12 18 19&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=5554]&lt;br&gt;&#xD;
MATCH[40]: '&amp;gt;01 02 09 18 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4930]&lt;br&gt;&#xD;
MATCH[41]: '&amp;gt;01 02 05 11 17&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4882]&lt;br&gt;&#xD;
MATCH[42]: '&amp;gt;01 02 04 07 12&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=3608]&lt;br&gt;&#xD;
MATCH[43]: '&amp;gt;01 02 07 11 19&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=3514]&lt;br&gt;&#xD;
MATCH[44]: '&amp;gt;01 02 06 11 18&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=3185]&lt;br&gt;&#xD;
MATCH[45]: '&amp;gt;01 02 06 09 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4266]&lt;br&gt;&#xD;
MATCH[46]: '&amp;gt;01 02 04 05 21&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4219]&lt;br&gt;&#xD;
MATCH[47]: '&amp;gt;01 02 04 12 18&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=3843]&lt;br&gt;&#xD;
MATCH[0]: '&amp;gt;01 03 05 12 14&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=6130]&lt;br&gt;&#xD;
MATCH[1]: '&amp;gt;01 03 11 19 22&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=5986]&lt;br&gt;&#xD;
MATCH[2]: '&amp;gt;01 03 04 07 13&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=7205]&lt;br&gt;&#xD;
MATCH[3]: '&amp;gt;01 03 04 07 14&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=7058]&lt;br&gt;&#xD;
MATCH[4]: '&amp;gt;01 03 06 07 12&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=5506]&lt;br&gt;&#xD;
MATCH[5]: '&amp;gt;01 03 08 13 17&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=5266]&lt;br&gt;&#xD;
MATCH[6]: '&amp;gt;01 03 07 16 17&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=5170]&lt;br&gt;&#xD;
MATCH[7]: '&amp;gt;01 03 06 14 22&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=5410]&lt;br&gt;&#xD;
MATCH[8]: '&amp;gt;01 03 13 19 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=5314]&lt;br&gt;&#xD;
MATCH[9]: '&amp;gt;01 03 06 09 16&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=7793]&lt;br&gt;&#xD;
MATCH[10]: '&amp;gt;01 03 13 19 21&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=9116]&lt;br&gt;&#xD;
MATCH[11]: '&amp;gt;01 03 07 08 10&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=9018]&lt;br&gt;&#xD;
MATCH[12]: '&amp;gt;01 03 10 12 22&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=9851]&lt;br&gt;&#xD;
MATCH[13]: '&amp;gt;01 03 04 05 12&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=9165]&lt;br&gt;&#xD;
MATCH[14]: '&amp;gt;01 03 09 11 15&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=8724]&lt;br&gt;&#xD;
MATCH[15]: '&amp;gt;01 03 08 13 21&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=7940]&lt;br&gt;&#xD;
MATCH[16]: '&amp;gt;01 03 04 12 17&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=7891]&lt;br&gt;&#xD;
MATCH[17]: '&amp;gt;01 03 04 11 19&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=8675]&lt;br&gt;&#xD;
MATCH[18]: '&amp;gt;01 03 08 12 17&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=8038]&lt;br&gt;&#xD;
MATCH[19]: '&amp;gt;01 03 06 12 19&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=5026]&lt;br&gt;&#xD;
MATCH[20]: '&amp;gt;01 03 06 16 21&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=2574]&lt;br&gt;&#xD;
MATCH[21]: '&amp;gt;01 03 08 15 22&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=2527]&lt;br&gt;&#xD;
MATCH[22]: '&amp;gt;01 03 06 09 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=2809]&lt;br&gt;&#xD;
MATCH[23]: '&amp;gt;01 03 05 18 21&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=2668]&lt;br&gt;&#xD;
MATCH[24]: '&amp;gt;01 03 13 17 22&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=2057]&lt;br&gt;&#xD;
MATCH[25]: '&amp;gt;01 03 06 07 18&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=835]&lt;br&gt;&#xD;
MATCH[26]: '&amp;gt;01 03 10 11 14&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=281]&lt;br&gt;&#xD;
MATCH[27]: '&amp;gt;01 03 16 19 21&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=1587]&lt;br&gt;&#xD;
MATCH[28]: '&amp;gt;01 03 06 17 21&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=976]&lt;br&gt;&#xD;
MATCH[29]: '&amp;gt;01 03 05 08 22&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=3044]&lt;br&gt;&#xD;
MATCH[30]: '&amp;gt;01 03 04 13 18&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4595]&lt;br&gt;&#xD;
MATCH[31]: '&amp;gt;01 03 12 17 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4501]&lt;br&gt;&#xD;
MATCH[32]: '&amp;gt;01 03 08 10 19&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4834]&lt;br&gt;&#xD;
MATCH[33]: '&amp;gt;01 03 04 07 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4690]&lt;br&gt;&#xD;
MATCH[34]: '&amp;gt;01 03 05 09 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4407]&lt;br&gt;&#xD;
MATCH[35]: '&amp;gt;01 03 07 17 20&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=3796]&lt;br&gt;&#xD;
MATCH[36]: '&amp;gt;01 03 08 09 12&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=3655]&lt;br&gt;&#xD;
MATCH[37]: '&amp;gt;01 03 09 14 18&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4313]&lt;br&gt;&#xD;
MATCH[38]: '&amp;gt;01 03 09 15 18&amp;lt;'&amp;nbsp;&amp;nbsp;  [index=4172]&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/qinhaijun/aggbug/2154285.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154285.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154286.html</id><title type="text">&#xD;
&#xD;
事务（进程 ID ）与另一个进程已被死锁在 lock 资源上，且该事务已被选作死锁牺牲品</title><summary type="text"/><published>2011-08-26T05:07:00Z</published><updated>2011-08-26T05:07:00Z</updated><author><name>qinhaijun</name><uri>http://www.cnblogs.com/qinhaijun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154286.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154286.html"/><content type="html">&lt;div id="blog_text"  &gt;&lt;p&gt;&lt;font size="3"&gt;事务（进程 ID ）与另一个进程已被死锁在 lock 资源上，且该事务已被选作死锁牺牲品。请重新运行该事务&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;其实所有的死锁最深层的原因就是一个:资源竞争 表现一:&lt;br&gt;&#xD;
一个用户A 访问表A(锁住了表A),然后又访问表B&lt;br&gt;&#xD;
另一个用户B 访问表B(锁住了表B),然后企图访问表A&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;这时用户A由于用户B已经锁住表B，它必须等待用户B释放表B,才能继续，好了他老人家就只好老老实实在这等了&lt;br&gt;&#xD;
同样用户B要等用户A释放表A才能继续这就死锁了&lt;br&gt;&#xD;
解决方法：&lt;br&gt;&#xD;
这种死锁是由于你的程序的BUG产生的，除了调整你的程序的逻辑别无他法&lt;br&gt;&#xD;
仔细分析你程序的逻辑，&lt;br&gt;&#xD;
1：尽量避免同时锁定两个资源&lt;br&gt;&#xD;
2: 必须同时锁定两个资源时，要保证在任何时刻都应该按照相同的顺序来锁定资源.&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;表现二:&lt;br&gt;&#xD;
用户A读一条纪录，然后修改该条纪录&lt;br&gt;&#xD;
这是用户B修改该条纪录&lt;br&gt;&#xD;
这里用户A的事务里锁的性质由共享锁企图上升到独占锁(for update),而用户B里的独占锁由于A有共享锁存在所以必须等A释&lt;br&gt;&#xD;
放掉共享锁，而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁，于是出现了死锁。&lt;br&gt;&#xD;
这种死锁比较隐蔽，但其实在稍大点的项目中经常发生。&lt;br&gt;&#xD;
解决方法:&lt;br&gt;&#xD;
让用户A的事务（即先读后写类型的操作),在select 时就是用Update lock&lt;br&gt;&#xD;
语法如下：&lt;br&gt;&#xD;
select * from table1 with(updlock) where ....&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;==========================&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;在联机事务处理(OLTP)的数据库应用系统中，多用户、多任务的并发性是系统最重要的技术指标之一。为了提高并发性，目前大部分RDBMS都采用加锁技术。然而由于现实环境的复杂性，使用加锁技术又不可避免地产生了死锁问题。因此如何合理有效地使用加锁技术，最小化死锁是开发联机事务处理系统的关键。 &lt;br&gt;&#xD;
死锁产生的原因 &lt;br&gt;&#xD;
在联机事务处理系统中，造成死机主要有两方面原因。一方面，由于多用户、多任务的并发性和事务的完整性要求，当多个事务处理对多个资源同时访问时，若双方已锁定一部分资源但也都需要对方已锁定的资源时，无法在有限的时间内完全获得所需的资源，就会处于无限的等待状态，从而造成其对资源需求的死锁。 &lt;br&gt;&#xD;
另一方面，数据库本身加锁机制的实现方法不同，各数据库系统也会产生其特殊的死锁情况。如在Sybase SQL Server 11中，最小锁为2K一页的加锁方法，而非行级锁。如果某张表的记录数少且记录的长度较短(即记录密度高，如应用系统中的系统配置表或系统参数表就属于此类表)，被访问的频率高，就容易在该页上产生死锁。 &lt;br&gt;&#xD;
几种死锁情况及解决方法 &lt;br&gt;&#xD;
清算应用系统中，容易发生死锁的几种情况如下: &lt;br&gt;&#xD;
● 不同的存储过程、触发器、动态SQL语句段按照不同的顺序同时访问多张表; &lt;br&gt;&#xD;
● 在交换期间添加记录频繁的表，但在该表上使用了非群集索引(non-clustered); &lt;br&gt;&#xD;
● 表中的记录少，且单条记录较短，被访问的频率较高； &lt;br&gt;&#xD;
● 整张表被访问的频率高(如代码对照表的查询等)。 &lt;br&gt;&#xD;
以上死锁情况的对应处理方法如下： &lt;br&gt;&#xD;
● 在系统实现时应规定所有存储过程、触发器、动态SQL语句段中，对多张表的操作总是使用同一顺序。如：有两个存储过程proc1、proc2，都需要访问三张表zltab、z2tab和z3tab，如果proc1按照zltab、z2tab和z3tab的顺序进行访问，那么，proc2也应该按照以上顺序访问这三张表。 &lt;br&gt;&#xD;
● 对在交换期间添加记录频繁的表，使用群集索引(clustered)，以减少多个用户添加记录到该表的最后一页上，在表尾产生热点，造成死锁。这类表多为往来账的流水表，其特点是在交换期间需要在表尾追加大量的记录，并且对已添加的记录不做或较少做删除操作。 &lt;br&gt;&#xD;
● 对单张表中记录数不太多，且在交换期间select或updata较频繁的表可使用设置每页最大行的办法，减少数据在表中存放的密度，模拟行级锁，减少在该表上死锁情况的发生。这类表多为信息繁杂且记录条数少的表。 &lt;br&gt;&#xD;
如：系统配置表或系统参数表。在定义该表时添加如下语句： &lt;br&gt;&#xD;
with max_rows_per_page=1 &lt;br&gt;&#xD;
● 在存储过程、触发器、动态SQL语句段中，若对某些整张表select操作较频繁，则可能在该表上与其他访问该表的用户产生死锁。对于检查账号是否存在，但被检查的字段在检查期间不会被更新等非关键语句，可以采用在select命令中使用at isolation read uncommitted子句的方法解决。该方法实际上降低了select语句对整张表的锁级别，提高了其他用户对该表操作的并发性。在系统高负荷运行时，该方法的效果尤为显著。 &lt;br&gt;&#xD;
例如： &lt;br&gt;&#xD;
select*from titles at isolation read uncommitted &lt;br&gt;&#xD;
● 对流水号一类的顺序数生成器字段，可以先执行updata流水号字段+1，然后再执行select获取流水号的方法进行操作。 &lt;br&gt;&#xD;
小结 &lt;br&gt;&#xD;
笔者对同城清算系统进行压力测试时，分别对采用上述优化方法和不采用优化方法的两套系统进行测试。在其他条件相同的情况下，相同业务笔数、相同时间内，死锁发生的情况如下： &lt;br&gt;&#xD;
采用优化方法的系统: 0次/万笔业务; &lt;br&gt;&#xD;
不采用优化方法的系统：50～200次/万笔业务。 &lt;br&gt;&#xD;
所以，使用上述优化方法后，特别是在系统高负荷运行时效果尤为显著。总之，在设计、开发数据库应用系统，尤其是OLTP系统时，应该根据应用系统的具体情况，依据上述原则对系统分别优化，为开发一套高效、可靠的应用系统打下良好的基础。 &lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;============&lt;br&gt;&#xD;
--转  &lt;br&gt;&#xD;
/******************************************************** &lt;br&gt;&#xD;
//&amp;nbsp;&amp;nbsp;  创建 :&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
//&amp;nbsp;&amp;nbsp;  日期 : &lt;br&gt;&#xD;
//&amp;nbsp;&amp;nbsp;  修改 :&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
//&amp;nbsp;&amp;nbsp;  说明 : 查看数据库里阻塞和死锁情况 &lt;br&gt;&#xD;
********************************************************/&amp;nbsp;&amp;nbsp;  &lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;use master&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;go&lt;br&gt;&#xD;
CREATE procedure sp_who_lock&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
as &lt;br&gt;&#xD;
begin&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
declare @spid int,@bl int,&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
@intTransactionCountOnEntry&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  int,&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
@intRowcount&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  int,&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
@intCountProperties&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  int,&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
@intCounter&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  int &lt;br&gt;&#xD;
create table #tmp_lock_who (&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
id int identity(1,1),&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
spid smallint,&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
bl smallint)&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
IF @@ERROR&amp;lt;&amp;gt;0 RETURN @@ERROR&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
insert into #tmp_lock_who(spid,bl) select&amp;nbsp;&amp;nbsp;  0 ,blocked&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
from (select * from sysprocesses where&amp;nbsp;&amp;nbsp;  blocked&amp;gt;0 ) a&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
where not exists(select * from (select * from sysprocesses&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
where&amp;nbsp;&amp;nbsp;  blocked&amp;gt;0 ) b&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
where a.blocked=spid)&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
union select spid,blocked from sysprocesses where&amp;nbsp;&amp;nbsp;  blocked&amp;gt;0&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
IF @@ERROR&amp;lt;&amp;gt;0 RETURN @@ERROR&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
-- 找到临时表的记录数&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
select&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  @intCountProperties = Count(*),@intCounter = 1&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
from #tmp_lock_who&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
IF @@ERROR&amp;lt;&amp;gt;0 RETURN @@ERROR&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
if&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  @intCountProperties=0&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
select '现在没有阻塞和死锁信息' as message&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
-- 循环开始&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
while @intCounter &amp;lt;= @intCountProperties&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
begin&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
-- 取第一条记录&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
select&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  @spid = spid,@bl = bl&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
from #tmp_lock_who where Id = @intCounter&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
begin&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
if @spid =0&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10))&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
+ '进程号,其执行的SQL语法如下' &lt;br&gt;&#xD;
else &lt;br&gt;&#xD;
select '进程号SPID：'+ CAST(@spid AS VARCHAR(10))+ '被' &lt;br&gt;&#xD;
+ '进程号SPID：'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下' &lt;br&gt;&#xD;
DBCC INPUTBUFFER (@bl )&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
end&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
-- 循环指针下移&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
set @intCounter = @intCounter + 1&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
end&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
drop table #tmp_lock_who&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
return 0&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
end&lt;br&gt;&#xD;
GO &lt;br&gt;&#xD;
==========================&lt;br&gt;&#xD;
呵呵，解决死锁，光查出来没有多大用处，我原来也是用这个存储过程来清理死锁的 &lt;br&gt;&#xD;
我解决死锁的方式主要用了： &lt;br&gt;&#xD;
1 优化索引 &lt;br&gt;&#xD;
2 对所有的报表，非事务性的select 语句 在from 后都加了 with (nolock) 语句 &lt;br&gt;&#xD;
3 对所有的事务性更新尽量使用相同的更新顺序来执行 &lt;br&gt;&#xD;
现在已解决了死锁的问题，希望能对你有帮助&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;with (nolock)的用法很灵活 可以说只要有 from的地方都可以加 with (nolock) 标记来取消产生意象锁，这里 可以用在 delete update,select 以及 inner join 后面的from里，对整个系统的性能提高都很有帮助&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;==========================&lt;br&gt;&#xD;
use master --必须在master数据库中创建&lt;br&gt;&#xD;
go&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;if exists (select * from dbo.sysobjects where id = object_id(N [dbo].[p_lockinfo] ) and OBJECTPROPERTY(id, N IsProcedure ) = 1)&lt;br&gt;&#xD;
drop procedure [dbo].[p_lockinfo]&lt;br&gt;&#xD;
GO&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;/*--处理死锁&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;查看当前进程,或死锁进程,并能自动杀掉死进程&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;因为是针对死的,所以如果有死锁进程,只能查看死锁进程&lt;br&gt;&#xD;
当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;--邹建 2004.4--*/&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;/*--调用示例&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;exec p_lockinfo&lt;br&gt;&#xD;
--*/&lt;br&gt;&#xD;
create proc p_lockinfo&lt;br&gt;&#xD;
@kill_lock_spid bit=1, --是否杀掉死锁的进程,1 杀掉, 0 仅显示&lt;br&gt;&#xD;
@show_spid_if_nolock bit=1 --如果没有死锁的进程,是否显示正常进程信息,1 显示,0 不显示&lt;br&gt;&#xD;
as&lt;br&gt;&#xD;
declare @count int,@s nvarchar(1000),@i int&lt;br&gt;&#xD;
select id=identity(int,1,1),标志,&lt;br&gt;&#xD;
进程ID=spid,线程ID=kpid,块进程ID=blocked,数据库ID=dbid,&lt;br&gt;&#xD;
数据库名=db_name(dbid),用户ID=uid,用户名=loginame,累计CPU时间=cpu,&lt;br&gt;&#xD;
登陆时间=login_time,打开事务数=open_tran, 进程状态=status,&lt;br&gt;&#xD;
工作站名=hostname,应用程序名=program_name,工作站进程ID=hostprocess,&lt;br&gt;&#xD;
域名=nt_domain,网卡地址=net_address&lt;br&gt;&#xD;
into #t from(&lt;br&gt;&#xD;
select 标志='死锁的进程',&lt;br&gt;&#xD;
spid,kpid,a.blocked,dbid,uid,loginame,cpu,login_time,open_tran,&lt;br&gt;&#xD;
status,hostname,program_name,hostprocess,nt_domain,net_address,&lt;br&gt;&#xD;
s1=a.spid,s2=0&lt;br&gt;&#xD;
from master..sysprocesses a join (&lt;br&gt;&#xD;
select blocked from master..sysprocesses group by blocked&lt;br&gt;&#xD;
)b on a.spid=b.blocked where a.blocked=0&lt;br&gt;&#xD;
union all&lt;br&gt;&#xD;
select '|_牺牲品_&amp;gt;',&lt;br&gt;&#xD;
spid,kpid,blocked,dbid,uid,loginame,cpu,login_time,open_tran,&lt;br&gt;&#xD;
status,hostname,program_name,hostprocess,nt_domain,net_address,&lt;br&gt;&#xD;
s1=blocked,s2=1&lt;br&gt;&#xD;
from master..sysprocesses a where blocked&amp;lt;&amp;gt;0&lt;br&gt;&#xD;
)a order by s1,s2&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;select @count=@@rowcount,@i=1&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;if @count=0 and @show_spid_if_nolock=1&lt;br&gt;&#xD;
begin&lt;br&gt;&#xD;
insert #t&lt;br&gt;&#xD;
select 标志='正常的进程',&lt;br&gt;&#xD;
spid,kpid,blocked,dbid,db_name(dbid),uid,loginame,cpu,login_time,&lt;br&gt;&#xD;
open_tran,status,hostname,program_name,hostprocess,nt_domain,net_address&lt;br&gt;&#xD;
from master..sysprocesses&lt;br&gt;&#xD;
set @count=@@rowcount&lt;br&gt;&#xD;
end&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;if @count&amp;gt;0&lt;br&gt;&#xD;
begin&lt;br&gt;&#xD;
create table #t1(id int identity(1,1),a nvarchar(30),b Int,EventInfo nvarchar(255))&lt;br&gt;&#xD;
if @kill_lock_spid=1&lt;br&gt;&#xD;
begin&lt;br&gt;&#xD;
declare @spid varchar(10),@标志 varchar(10)&lt;br&gt;&#xD;
while @i&amp;lt;&lt;/font&gt;&lt;a href="mailto:=@count"&gt;&lt;font size="3"&gt;=@count&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&#xD;
&lt;font size="3"&gt;begin&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;  select @spid=进程ID,@标志=标志 from #t where &lt;/font&gt;&lt;a href="mailto:id=@i"&gt;&lt;font size="3"&gt;id=@i&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&#xD;
&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;  insert #t1 exec('dbcc inputbuffer(&lt;/font&gt;&lt;a &gt;&lt;font size="3"&gt;'+@spid+')'&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;)&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;  if @标志='死锁的进程' exec('kill &lt;/font&gt;&lt;a &gt;&lt;font size="3"&gt;'+@spid&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;)&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;  set @i=@i+1&lt;br&gt;&#xD;
end&lt;br&gt;&#xD;
end&lt;br&gt;&#xD;
else&lt;br&gt;&#xD;
while @i&amp;lt;&lt;/font&gt;&lt;a href="mailto:=@count"&gt;&lt;font size="3"&gt;=@count&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&#xD;
&lt;font size="3"&gt;begin&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;  select @s='dbcc inputbuffer('+cast(进程ID as varchar)+')' from #t where &lt;/font&gt;&lt;a href="mailto:id=@i"&gt;&lt;font size="3"&gt;id=@i&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&#xD;
&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;  insert #t1 exec(@s)&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;  set @i=@i+1&lt;br&gt;&#xD;
end&lt;br&gt;&#xD;
select a.*,进程的SQL语句=b.EventInfo&lt;br&gt;&#xD;
from #t a join #t1 b on a.id=b.id&lt;br&gt;&#xD;
end&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="3"&gt;GO&lt;br&gt;&#xD;
&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/qinhaijun/aggbug/2154286.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154286.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154287.html</id><title type="text">&#xD;
&#xD;
DataGridView 绑定 DataGridViewComboBoxColumn 空白问题</title><summary type="text"/><published>2011-08-26T05:07:00Z</published><updated>2011-08-26T05:07:00Z</updated><author><name>qinhaijun</name><uri>http://www.cnblogs.com/qinhaijun/</uri></author><link rel="alternate" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154287.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154287.html"/><content type="html">&lt;div id="blog_text"  &gt;&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;img  border="0" small="0" src="http://hiphotos.baidu.com/tshxsky/pic/item/df49d1a49180e4bf9052ee95.jpg"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;源码：&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;using System;&lt;br&gt;&#xD;
using System.Collections.Generic;&lt;br&gt;&#xD;
using System.ComponentModel;&lt;br&gt;&#xD;
using System.Data;&lt;br&gt;&#xD;
using System.Drawing;&lt;br&gt;&#xD;
using System.Text;&lt;br&gt;&#xD;
using System.Windows.Forms;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;namespace dgview&lt;br&gt;&#xD;
{&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  public partial class Form1 : Form&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  {&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /// &amp;lt;summary&amp;gt;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /// DataGridView 绑定 DataGridViewComboBoxColumn 一点小问题&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /// &lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /// 原文参考 MSDN&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /// &amp;lt;/summary&amp;gt;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  public Form1()&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  {&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  InitializeComponent();&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  private DataTable CreateTable()&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  {&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //动态创建表格 &lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  DataTable dt = new DataTable();&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  DataColumn dc1 = new DataColumn(&amp;quot;StuNo&amp;quot;, typeof(String)); //typeof(String) 数据类型&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  DataColumn dc2 = new DataColumn(&amp;quot;StuName&amp;quot;, typeof(String));&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dt.Columns.AddRange(new DataColumn[] { dc1, dc2 });&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  DataRow dr = dt.NewRow();&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dr[&amp;quot;StuNo&amp;quot;] = &amp;quot;A0001&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dr[&amp;quot;StuName&amp;quot;] = &amp;quot;张三&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dt.Rows.Add(dr);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  DataRow dr2 = dt.NewRow();&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dr2[&amp;quot;StuNo&amp;quot;] = &amp;quot;A0002&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dr2[&amp;quot;StuName&amp;quot;] = &amp;quot;李四&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dt.Rows.Add(dr2);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  DataRow dr3 = dt.NewRow();&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dr3[&amp;quot;StuNo&amp;quot;] = &amp;quot;A0003&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dr3[&amp;quot;StuName&amp;quot;] = &amp;quot;王五&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dt.Rows.Add(dr3);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  DataRow dr4 = dt.NewRow();&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dr4[&amp;quot;StuNo&amp;quot;] = &amp;quot;A0004&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dr4[&amp;quot;StuName&amp;quot;] = &amp;quot;赵六&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dt.Rows.Add(dr4);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  return dt;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  private void button2_Click(object sender, EventArgs e)&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  {&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  DataGridViewTextBoxColumn TextBoxColumn = new DataGridViewTextBoxColumn();&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  TextBoxColumn.HeaderText = &amp;quot;编号&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  TextBoxColumn.DataPropertyName = &amp;quot;StuNo&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  TextBoxColumn.Name = &amp;quot;StuNo&amp;quot;;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  DataGridViewTextBoxColumn TextBoxColumn2 = new DataGridViewTextBoxColumn();&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  TextBoxColumn2.HeaderText = &amp;quot;姓名&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  TextBoxColumn2.DataPropertyName = &amp;quot;StuName&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  TextBoxColumn2.Name = &amp;quot;StuName&amp;quot;;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  DataGridViewComboBoxColumn ComboBoxColumn = new DataGridViewComboBoxColumn();&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ComboBoxColumn.HeaderText = &amp;quot;配对&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ComboBoxColumn.Name = &amp;quot;info&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ComboBoxColumn.DataSource =CreateTable();&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ComboBoxColumn.DisplayMember=&amp;quot;StuName&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ComboBoxColumn.ValueMember=&amp;quot;StuNo&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ComboBoxColumn.DataPropertyName = &amp;quot;StuNo&amp;quot;; //搞死人，绑定之后显示空白，原来这个没有设置&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ComboBoxColumn.DisplayStyle = DataGridViewComboBoxDisplayStyle.DropDownButton;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  DataGridViewButtonColumn ButtonColumn = new DataGridViewButtonColumn();&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ButtonColumn.Name = &amp;quot;Details&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ButtonColumn.HeaderText = &amp;quot;保存&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ButtonColumn.Text = &amp;quot;保存&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ButtonColumn.DataPropertyName = &amp;quot;保存&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ButtonColumn.UseColumnTextForButtonValue = true;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dataGridView2.Columns.AddRange(new DataGridViewColumn[] { TextBoxColumn, TextBoxColumn2, ComboBoxColumn, ButtonColumn });&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  DataTable dt = CreateTable();&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  this.dataGridView2.DataSource = dt;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  this.dataGridView2.AllowUserToAddRows = false;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  {&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  /*这个地方的索引好像不对，怎么变成1，2，3，0 的顺序了，按钮列的ColumnIndex=0&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  *然后就是CellContentClick，事件并不是每次都触发了，有的时候不弹出MessageBox.Show 难道我点的不够好。&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  */&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  MessageBox.Show(e.RowIndex + &amp;quot;_&amp;quot; + e.ColumnIndex);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  if (e.RowIndex &amp;lt; 0 || e.ColumnIndex != dataGridView2.Columns[&amp;quot;Details&amp;quot;].Index) &lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  return;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  string StuNo = this.dataGridView2.Rows[e.RowIndex].Cells[&amp;quot;StuNo&amp;quot;].Value.ToString();&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  string StuName = this.dataGridView2.Rows[e.RowIndex].Cells[&amp;quot;StuName&amp;quot;].Value.ToString();&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  string info = this.dataGridView2.Rows[e.RowIndex].Cells[&amp;quot;info&amp;quot;].Value.ToString();&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  MessageBox.Show(&amp;quot;\tStuNo:&amp;quot; + StuNo + &amp;quot;\t\r\n&amp;quot; + &amp;quot;\tStuName:&amp;quot; + StuName + &amp;quot;\t\r\n&amp;quot; + &amp;quot;\t下拉列表框：&amp;quot; + info + &amp;quot;\t&amp;quot;);&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;br&gt;&#xD;
}&lt;br&gt;&#xD;
&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;//如果下拉列表框 绑定的是不同的数据源&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;需要如下设置：&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;for (int i = 0; i &amp;lt; dataGridView1.Rows.Count; i++)&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  {&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  ((DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells[&amp;quot;info&amp;quot;]).Style.NullValue = &amp;quot;10&amp;quot;;&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;//即使这样，直接报错，由于this.dataGridView2.Rows[e.RowIndex].Cells[&amp;quot;info&amp;quot;].Value&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;会等于空，报错。&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;官方解释：&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/ms404353.aspx"&gt;http://msdn.microsoft.com/zh-cn/library/ms404353.aspx&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;等于弄了一个 &amp;ldquo;请选择&amp;rdquo; &lt;img src="http://img.baidu.com/hi/jx2/j_0004.gif"&gt;  我不请选择。&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font size="3"&gt;其实到这一步，我们也应该知道怎么办了。&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/qinhaijun/aggbug/2154287.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/qinhaijun/archive/2011/08/26/2154287.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
