<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>星★辰</title><link>http://hi.xxluntan.com/</link><description>释放心情,关注互联网动态,分享编程,分享SEO</description><generator>RainbowSoft Studio Z-Blog 1.8 Walle Build 100427</generator><language>zh-CN</language><copyright>Copyright 2006-2008 星★辰. Some Rights Reserved.业务联系：13949608480 QQ：38514999</copyright><pubDate>Mon, 07 Mar 2011 09:23:50 +0800</pubDate><item><title>rs.open sql,conn,1,1等语句详解</title><author>shenlag@163.com (shenlag)</author><link>http://hi.xxluntan.com/archives/43.html</link><pubDate>Tue, 07 Sep 2010 16:45:47 +0800</pubDate><guid>http://hi.xxluntan.com/archives/43.html</guid><description><![CDATA[<p>rs.open sql,conn,A,B<br />以下用于参考<br />A: <br /><br />ADOPENFORWARDONLY(=0) <br />只读,且当前数据记录只能向下移动 <br /><br />ADOPENKEYSET(=1) <br />只读,当前数据记录可自由移动 <br /><br />ADOPENDYNAMIC(=2) <br />可读写,当前数据记录可自由移动 <br /><br />ADOPENSTATIC(=3) <br />可读写,当前数据记录可自由移动,可看到新增记录 <br /><br />B: <br /><br />ADLOCKREADONLY(=1) <br />缺省锁定类型，记录集是只读的，不能修改记录 <br /><br />ADLOCKPESSIMISTIC(=2) <br />悲观锁定，当修改记录时，数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始，则立即锁住记录。 <br /><br />ADLOCKOPTIMISTIC(=3) <br />乐观锁定 ，直到用Update方法提交更新记录时才锁定记录。 <br /><br />ADLOCKBATCHOPTIMISTIC(=4) <br />批量乐观锁定，允许修改多个记录，只有调用UpdateBatch方法后才锁定记录。 <br /><br />当不需要改动任何记录时，应该使用只读的记录集，这样提供者不用做任何检测。 <br />对于一般的使用，乐观的锁定可能是最好的选择，因为记录只被锁定一小段时间， <br />数据在这段时间被更新。这减少了资源的使用。</p>]]></description><category>编程技术</category><comments>http://hi.xxluntan.com/archives/43.html#comment</comments><wfw:comment>http://hi.xxluntan.com/</wfw:comment><wfw:commentRss>http://hi.xxluntan.com/feed.asp?cmt=43</wfw:commentRss><trackback:ping>http://hi.xxluntan.com/cmd.asp?act=tb&amp;id=43&amp;key=3e405ed1</trackback:ping></item><item><title>asp,php连接数据库大全</title><author>shenlag@163.com (shenlag)</author><link>http://hi.xxluntan.com/archives/42.html</link><pubDate>Sat, 04 Sep 2010 22:32:10 +0800</pubDate><guid>http://hi.xxluntan.com/archives/42.html</guid><description><![CDATA[<p style="margin: 0cm 0cm 0pt"><strong><span><font face="Times New Roman">Asp</font></span></strong><strong><span>连接数据库推荐用</span><span><font face="Times New Roman">ACCESS,MSSQL</font></span></strong></p><p style="margin: 0cm 0cm 0pt">&nbsp;</p><p style="margin: 0cm 0cm 0pt"><span style="color: maroon"><font face="Times New Roman">ASP+ACCESS </font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">Conn.open=&rdquo;provider=microsoft.jet.oledb.4.0;da<wbr></wbr>ta source=&rdquo;&amp;server.mappath(&ldquo;</font></span><span style="color: green">数据库路径</span><font face="Times New Roman"><span style="color: green">&rdquo;)</span></font></p><p style="margin: 0cm 0cm 0pt"><span style="color: maroon"><font face="Times New Roman">ASP+MSSQL</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">Conn.open=&rdquo;provider=sqloledb;server=127.0.0.1;uid=sa;pwd=admin;database=wm&rdquo;</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: maroon"><font face="Times New Roman">ASP+MYSQL<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">conn.open=&quot;driver={MYSQLODBC 3.51 DRIVER};uid=root;pwd=;database=HR_MOVE;server=127.0.0.1&quot;</font></span></p><div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"><p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm"><span style="color: maroon"><font face="Times New Roman">ASP+SQLITE</font></span></p><p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm"><span style="color: green"><font face="Times New Roman">A conn.open=&quot;DSN=SQL_WM;DRIVER={SQLite3 ODBC Driver}&quot;</font></span></p><p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm"><span style="color: green"><font face="Times New Roman">B conn.open=&quot;DRIVER={SQLite3 ODBC Driver};DATABASE=D:\SQLITE\WWWW&quot;</font></span></p><p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm"><span style="color: maroon"><font face="Times New Roman">ASP+PostgreSQL</font></span></p><p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm"><span style="font-size: 9pt; color: green">conn.open=&quot;DRIVER={PostgreSQL ANSI};server=127.0.0.1;uid=itnows;pwd=000000;database=test1&quot;</span></p><p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm">&nbsp;</p></div><p style="margin: 0cm 0cm 0pt"><strong><span><font face="Times New Roman">php</font></span></strong><strong><span>连接数据库推荐用</span><span><font face="Times New Roman">PHP+MYSQL</font></span></strong></p><p style="margin: 0cm 0cm 0pt">&nbsp;</p><p style="margin: 0cm 0cm 0pt"><span style="color: maroon"><font face="Times New Roman">PHP+ACCESS</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">$conn<span>&nbsp;&nbsp;</span>=<span>&nbsp;&nbsp;</span>new<span>&nbsp;&nbsp;</span>com(&quot;ADODB.Connection&quot;);<span>&nbsp;&nbsp;</span></font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">$connstr<span>&nbsp;&nbsp;</span>= &quot;DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=&quot; . realpath(&quot;workermove.mdb&quot;);</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">$conn-&gt;Open($connstr);<span>&nbsp;&nbsp;</span></font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">$rs<span>&nbsp;&nbsp;</span>=<span>&nbsp;&nbsp;</span>new<span>&nbsp;&nbsp;</span>com(&quot;ADODB.RecordSet&quot;);</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">$rs-&gt;Open(SQL</font></span><span style="color: green">语句</span><span style="color: green"><font face="Times New Roman">,$conn,1,1);</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: maroon"><font face="Times New Roman">PHP+MSSQL</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">&lt;?</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">$conn<span>&nbsp;&nbsp;</span>=<span>&nbsp;&nbsp;</span>new<span>&nbsp;&nbsp;</span>com(&quot;ADODB.Connection&quot;);<span>&nbsp;&nbsp;</span></font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">$connstr<span>&nbsp;&nbsp;</span>= &quot;DRIVER={SQL SERVER};SERVER=127.0.0.1\GSQL;UID=SA;PWD=ADMIN;DATABASE=WORKMOVE&quot;;</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">$conn-&gt;Open($connstr);<span>&nbsp;&nbsp;</span></font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">?&gt;</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: maroon"><font face="Times New Roman">PHP+MYSQL</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">&lt;?</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">$<st1></st1><st1></st1>CONN=mysql_connection(&ldquo;127.0.<st1></st1>0.1&rdquo;,&rdquo;root&rdquo;,&rdquo;&rdquo;);</font></span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green"><font face="Times New Roman">?&gt;</font></span></p><div style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"><p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm"><span style="color: maroon"><font face="Times New Roman">PHP+SQLITE</font></span></p><p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm"><span style="color: green"><font face="Times New Roman">$db = @sqlite_open(&quot;sqlite.db&quot;); </font></span></p><p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm"><span style="color: green">也可调用</span><span style="color: green"><font face="Times New Roman">odbc</font></span><span style="color: green">方式连接</span><span style="color: green"><font face="Times New Roman">sqlite</font></span></p><p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm"><span style="color: green">详见</span><span style="color: green"><font face="Times New Roman">PHP</font></span><span style="color: green">手册</span></p><p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm"><span style="color: maroon"><font face="Times New Roman">PHP+PostgreSQL</font></span></p><p style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm"><span style="color: green"><font face="Times New Roman">$conn_string =@pg_connect(&quot;host=127.0.0.1 port=5432 dbname=test1 user=itnows password=000000&quot;)</font></span></p></div><p style="margin: 0cm 0cm 0pt">&nbsp;</p><p style="margin: 0cm 0cm 0pt"><span>关于</span><span><font face="Times New Roman">MYSQL</font></span><span>与</span><span><font face="Times New Roman">SQLITE</font></span><span>共同提取</span><span><font face="Times New Roman">5151</font></span><span>笔资料时间比较</span></p><p style="margin: 0cm 0cm 0pt"><span style="color: green">次数</span><span style="color: green"><font face="Times New Roman"> MYSQL<span>&nbsp;&nbsp;</span>SQLITE (</font></span><span style="color: green">单位，毫秒</span><span style="color: green"><font face="Times New Roman">)</font></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 5.25pt; mso-char-indent-count: .5"><span style="color: green"><font face="Times New Roman">1<span>&nbsp;&nbsp;&nbsp;</span>467.59<span>&nbsp;&nbsp;&nbsp;</span>325.57 69.6%</font></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 5.25pt; mso-char-indent-count: .5"><span style="color: green"><font face="Times New Roman">2<span>&nbsp;&nbsp;&nbsp;</span>509.15<span>&nbsp;&nbsp;&nbsp;</span>333.10 65.4%</font></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 5.25pt; mso-char-indent-count: .5"><span style="color: green"><font face="Times New Roman">3<span>&nbsp;&nbsp;&nbsp;</span>487.99<span>&nbsp;&nbsp;&nbsp;</span>326.93 66.9%</font></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 5.25pt; mso-char-indent-count: .5"><span style="color: green"><font face="Times New Roman">4<span>&nbsp;&nbsp;&nbsp;</span>511.35<span>&nbsp;&nbsp;&nbsp;</span>352.47 68.9%</font></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 5.25pt; mso-char-indent-count: .5"><span style="color: green"><font face="Times New Roman">5<span>&nbsp;&nbsp;&nbsp;</span>500.42<span>&nbsp;&nbsp;&nbsp;</span>328.93 65.7%</font></span></p>]]></description><category>服务器技术</category><comments>http://hi.xxluntan.com/archives/42.html#comment</comments><wfw:comment>http://hi.xxluntan.com/</wfw:comment><wfw:commentRss>http://hi.xxluntan.com/feed.asp?cmt=42</wfw:commentRss><trackback:ping>http://hi.xxluntan.com/cmd.asp?act=tb&amp;id=42&amp;key=f5149ee6</trackback:ping></item><item><title>Access、MySQL 以及 SQL Server 所使用的数据类型和范围</title><author>shenlag@163.com (shenlag)</author><link>http://hi.xxluntan.com/archives/41.html</link><pubDate>Fri, 03 Sep 2010 21:18:28 +0800</pubDate><guid>http://hi.xxluntan.com/archives/41.html</guid><description><![CDATA[<div><h2>Microsoft Access 数据类型</h2><table class="dataintable" cellspacing="2" cellpadding="2" width="98%" align="center" border="1">    <tbody>        <tr>            <th style="width: 20%">数据类型</th>            <th style="width: 65%">描述</th>            <th style="width: 15%">存储</th>        </tr>        <tr>            <td>Text</td>            <td>用于文本或文本与数字的组合。最多 255 个字符。</td>            <td>&nbsp;</td>        </tr>        <tr>            <td>Memo</td>            <td>            <p>Memo 用于更大数量的文本。最多存储 65,536 个字符。</p>            <p>注释：无法对 memo 字段进行排序。不过它们是可搜索的。</p>            </td>            <td>&nbsp;</td>        </tr>        <tr>            <td>Byte</td>            <td>允许 0 到 255 的数字。</td>            <td>1 字节</td>        </tr>        <tr>            <td>Integer</td>            <td>允许介于 -32,768 到 32,767 之间的数字。</td>            <td>2 字节</td>        </tr>        <tr>            <td>Long</td>            <td>允许介于 -2,147,483,648 与 2,147,483,647 之间的全部数字</td>            <td>4 字节</td>        </tr>        <tr>            <td>Single</td>            <td>单精度浮点。处理大多数小数。</td>            <td>4 字节</td>        </tr>        <tr>            <td>Double</td>            <td>双精度浮点。处理大多数小数。</td>            <td>8 字节</td>        </tr>        <tr>            <td>Currency</td>            <td>            <p>用于货币。支持 15 位的元，外加 4 位小数。</p>            <p>提示：您可以选择使用哪个国家的货币。</p>            </td>            <td>8 字节</td>        </tr>        <tr>            <td>AutoNumber</td>            <td>AutoNumber 字段自动为每条记录分配数字，通常从 1 开始。</td>            <td>4 字节</td>        </tr>        <tr>            <td>Date/Time</td>            <td>用于日期和时间</td>            <td>8 字节</td>        </tr>        <tr>            <td>Yes/No</td>            <td>            <p>逻辑字段，可以显示为 Yes/No、True/False 或 On/Off。</p>            <p>在代码中，使用常量 True 和 False （等价于 1 和 0）</p>            <p>注释：Yes/No 字段中不允许 Null 值</p>            </td>            <td>1 比特</td>        </tr>        <tr>            <td>Ole Object</td>            <td>可以存储图片、音频、视频或其他 BLOBs (Binary Large OBjects)</td>            <td>最多 1GB</td>        </tr>        <tr>            <td>Hyperlink</td>            <td>包含指向其他文件的链接，包括网页。</td>            <td>&nbsp;</td>        </tr>        <tr>            <td>Lookup Wizard</td>            <td>允许你创建一个可从下列列表中进行选择的选项列表。</td>            <td>4 字节</td>        </tr>    </tbody></table></div><div><h2>MySQL 数据类型</h2><p>在 MySQL 中，有三种主要的类型：文本、数字和日期/时间类型。</p><h3>Text 类型：</h3><table class="dataintable" cellspacing="2" cellpadding="2" width="98%" align="center" border="1">    <tbody>        <tr>            <th style="width: 20%">数据类型</th>            <th style="width: 80%">描述</th>        </tr>        <tr>            <td>CHAR(size)</td>            <td>保存固定长度的字符串（可包含字母、数字以及特殊字符）。在括号中指定字符串的长度。最多 255 个字符。</td>        </tr>        <tr>            <td>VARCHAR(size)</td>            <td>            <p>保存可变长度的字符串（可包含字母、数字以及特殊字符）。在括号中指定字符串的最大长度。最多 255 个字符。</p>            <p>注释：如果值的长度大于 255，则被转换为 TEXT 类型。</p>            </td>        </tr>        <tr>            <td>TINYTEXT</td>            <td>存放最大长度为 255 个字符的字符串。</td>        </tr>        <tr>            <td>TEXT</td>            <td>存放最大长度为 65,535 个字符的字符串。</td>        </tr>        <tr>            <td>BLOB</td>            <td>用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。</td>        </tr>        <tr>            <td>MEDIUMTEXT</td>            <td>存放最大长度为 16,777,215 个字符的字符串。</td>        </tr>        <tr>            <td>MEDIUMBLOB</td>            <td>用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。</td>        </tr>        <tr>            <td>LONGTEXT</td>            <td>存放最大长度为 4,294,967,295 个字符的字符串。</td>        </tr>        <tr>            <td>LONGBLOB</td>            <td>用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。</td>        </tr>        <tr>            <td class="no_wrap">ENUM(x,y,z,etc.)</td>            <td>            <p>允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值，则插入空值。</p>            <p>注释：这些值是按照你输入的顺序存储的。</p>            <p>可以按照此格式输入可能的值：ENUM('X','Y','Z')</p>            </td>        </tr>        <tr>            <td>SET</td>            <td>与 ENUM 类似，SET 最多只能包含 64 个列表项，不过 SET 可存储一个以上的值。</td>        </tr>    </tbody></table><h3>Number 类型：</h3><table class="dataintable" cellspacing="2" cellpadding="2" width="98%" align="center" border="1">    <tbody>        <tr>            <th style="width: 20%">数据类型</th>            <th style="width: 80%">描述</th>        </tr>        <tr>            <td>TINYINT(size)</td>            <td>-128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。</td>        </tr>        <tr>            <td>SMALLINT(size)</td>            <td>-32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。</td>        </tr>        <tr>            <td>MEDIUMINT(size)</td>            <td>-8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。</td>        </tr>        <tr>            <td>INT(size)</td>            <td>-2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。</td>        </tr>        <tr>            <td>BIGINT(size)</td>            <td>-9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。</td>        </tr>        <tr>            <td>FLOAT(size,d)</td>            <td>带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。</td>        </tr>        <tr>            <td>DOUBLE(size,d)</td>            <td>带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。</td>        </tr>        <tr>            <td>DECIMAL(size,d)</td>            <td>作为字符串存储的 DOUBLE 类型，允许固定的小数点。</td>        </tr>    </tbody></table><p>* 这些整数类型拥有额外的选项 UNSIGNED。通常，整数可以是负数或正数。如果添加 UNSIGNED 属性，那么范围将从 0 开始，而不是某个负数。</p><h3>Date 类型：</h3><table class="dataintable" cellspacing="2" cellpadding="2" width="98%" align="center" border="1">    <tbody>        <tr>            <th style="width: 20%">数据类型</th>            <th style="width: 80%">描述</th>        </tr>        <tr>            <td>DATE()</td>            <td>            <p>日期。格式：YYYY-MM-DD</p>            <p>注释：支持的范围是从 '1000-01-01' 到 '9999-12-31'</p>            </td>        </tr>        <tr>            <td>DATETIME()</td>            <td>            <p>*日期和时间的组合。格式：YYYY-MM-DD HH:MM:SS</p>            <p>注释：支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'</p>            </td>        </tr>        <tr>            <td class="no_wrap">TIMESTAMP()</td>            <td>            <p>*时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式：YYYY-MM-DD HH:MM:SS</p>            <p>注释：支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC</p>            </td>        </tr>        <tr>            <td>TIME()</td>            <td>时间。格式：HH:MM:SS 注释：支持的范围是从 '-838:59:59' 到 '838:59:59'</td>        </tr>        <tr>            <td>YEAR()</td>            <td>            <p>2 位或 4 位格式的年。</p>            <p>注释：4 位格式所允许的值：1901 到 2155。2 位格式所允许的值：70 到 69，表示从 1970 到 2069。</p>            </td>        </tr>    </tbody></table><p>* 即便 DATETIME 和 TIMESTAMP 返回相同的格式，它们的工作方式很不同。在 Insert 或 Update 查询中，TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式，比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。</p></div><div><h2>SQL Server 数据类型</h2><h3>Character 字符串：</h3><table class="dataintable" cellspacing="2" cellpadding="2" width="98%" align="center" border="1">    <tbody>        <tr>            <th style="width: 20%">数据类型</th>            <th style="width: 65%">描述</th>            <th style="width: 15%">存储</th>        </tr>        <tr>            <td>char(n)</td>            <td>固定长度的字符串。最多 8,000 个字符。</td>            <td>n</td>        </tr>        <tr>            <td>varchar(n)</td>            <td>可变长度的字符串。最多 8,000 个字符。</td>            <td>&nbsp;</td>        </tr>        <tr>            <td>varchar(max)</td>            <td>可变长度的字符串。最多 1,073,741,824 个字符。</td>            <td>&nbsp;</td>        </tr>        <tr>            <td>text</td>            <td>可变长度的字符串。最多 2GB 字符数据。</td>            <td>&nbsp;</td>        </tr>    </tbody></table><h3>Unicode 字符串：</h3><table class="dataintable" cellspacing="2" cellpadding="2" width="98%" align="center" border="1">    <tbody>        <tr>            <th style="width: 20%">数据类型</th>            <th style="width: 65%">描述</th>            <th style="width: 15%">存储</th>        </tr>        <tr>            <td>nchar(n)</td>            <td>固定长度的 Unicode 数据。最多 4,000 个字符。</td>            <td>&nbsp;</td>        </tr>        <tr>            <td>nvarchar(n)</td>            <td>可变长度的 Unicode 数据。最多 4,000 个字符。</td>            <td>&nbsp;</td>        </tr>        <tr>            <td>nvarchar(max)</td>            <td>可变长度的 Unicode 数据。最多 536,870,912 个字符。</td>            <td>&nbsp;</td>        </tr>        <tr>            <td>ntext</td>            <td>可变长度的 Unicode 数据。最多 2GB 字符数据。</td>            <td>&nbsp;</td>        </tr>    </tbody></table><h3>Binary 类型：</h3><table class="dataintable" cellspacing="2" cellpadding="2" width="98%" align="center" border="1">    <tbody>        <tr>            <th style="width: 20%">数据类型</th>            <th style="width: 65%">描述</th>            <th style="width: 15%">存储</th>        </tr>        <tr>            <td>bit</td>            <td>允许 0、1 或 NULL</td>            <td>&nbsp;</td>        </tr>        <tr>            <td>binary(n)</td>            <td>固定长度的二进制数据。最多 8,000 字节。</td>            <td>&nbsp;</td>        </tr>        <tr>            <td>varbinary(n)</td>            <td>可变长度的二进制数据。最多 8,000 字节。</td>            <td>&nbsp;</td>        </tr>        <tr>            <td>varbinary(max)</td>            <td>可变长度的二进制数据。最多 2GB 字节。</td>            <td>&nbsp;</td>        </tr>        <tr>            <td>image</td>            <td>可变长度的二进制数据。最多 2GB。</td>            <td>&nbsp;</td>        </tr>    </tbody></table><h3>Number 类型：</h3><table class="dataintable" cellspacing="2" cellpadding="2" width="98%" align="center" border="1">    <tbody>        <tr>            <th style="width: 20%">数据类型</th>            <th style="width: 65%">描述</th>            <th style="width: 15%">存储</th>        </tr>        <tr>            <td>tinyint</td>            <td>允许从 0 到 255 的所有数字。</td>            <td>1 字节</td>        </tr>        <tr>            <td>smallint</td>            <td>允许从 -32,768 到 32,767 的所有数字。</td>            <td>2 字节</td>        </tr>        <tr>            <td>int</td>            <td>允许从 -2,147,483,648 到 2,147,483,647 的所有数字。</td>            <td>4 字节</td>        </tr>        <tr>            <td>bigint</td>            <td>允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。</td>            <td>8 字节</td>        </tr>        <tr>            <td>decimal(p,s)</td>            <td>            <p>固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。</p>            <p>p 参数指示可以存储的最大位数（小数点左侧和右侧）。p 必须是 1 到 38 之间的值。默认是 18。</p>            <p>s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。</p>            </td>            <td>5-17 字节</td>        </tr>        <tr>            <td>numeric(p,s)</td>            <td>            <p>固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。</p>            <p>p 参数指示可以存储的最大位数（小数点左侧和右侧）。p 必须是 1 到 38 之间的值。默认是 18。</p>            <p>s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。</p>            </td>            <td>5-17 字节</td>        </tr>        <tr>            <td>smallmoney</td>            <td>介于 -214,748.3648 和 214,748.3647 之间的货币数据。</td>            <td>4 字节</td>        </tr>        <tr>            <td>money</td>            <td>介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。</td>            <td>8 字节</td>        </tr>        <tr>            <td>float(n)</td>            <td>从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。参数 n 指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节，而 float(53) 保存 8 字节。n 的默认值是 53。</td>            <td>4 或 8 字节</td>        </tr>        <tr>            <td>real</td>            <td>从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。</td>            <td>4 字节</td>        </tr>    </tbody></table><h3>Date 类型：</h3><table class="dataintable" cellspacing="2" cellpadding="2" width="98%" align="center" border="1">    <tbody>        <tr>            <th style="width: 20%">数据类型</th>            <th style="width: 65%">描述</th>            <th style="width: 15%">存储</th>        </tr>        <tr>            <td>datetime</td>            <td>从 1753 年 1 月 1 日 到 9999 年 12 月 31 日，精度为 3.33 毫秒。</td>            <td>8 bytes</td>        </tr>        <tr>            <td>datetime2</td>            <td>从 1753 年 1 月 1 日 到 9999 年 12 月 31 日，精度为 100 纳秒。</td>            <td>6-8 bytes</td>        </tr>        <tr>            <td>smalldatetime</td>            <td>从 1900 年 1 月 1 日 到 2079 年 6 月 6 日，精度为 1 分钟。</td>            <td>4 bytes</td>        </tr>        <tr>            <td>date</td>            <td>仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。</td>            <td>3 bytes</td>        </tr>        <tr>            <td>time</td>            <td>仅存储时间。精度为 100 纳秒。</td>            <td>3-5 bytes</td>        </tr>        <tr>            <td>datetimeoffset</td>            <td>与 datetime2 相同，外加时区偏移。</td>            <td>8-10 bytes</td>        </tr>        <tr>            <td>timestamp</td>            <td>存储唯一的数字，每当创建或修改某行时，该数字会更新。timestamp 基于内部时钟，不对应真实时间。每个表只能有一个 timestamp 变量。</td>            <td>&nbsp;</td>        </tr>    </tbody></table><h3>其他数据类型：</h3><table class="dataintable" cellspacing="2" cellpadding="2" width="98%" align="center" border="1">    <tbody>        <tr>            <th style="width: 20%">数据类型</th>            <th style="width: 80%">描述</th>        </tr>        <tr>            <td>sql_variant</td>            <td>存储最多 8,000 字节不同数据类型的数据，除了 text、ntext 以及 timestamp。</td>        </tr>        <tr>            <td>uniqueidentifier</td>            <td>存储全局标识符 (GUID)。</td>        </tr>        <tr>            <td>xml</td>            <td>存储 XML 格式化数据。最多 2GB。</td>        </tr>        <tr>            <td>cursor</td>            <td>存储对用于数据库操作的指针的引用。</td>        </tr>        <tr>            <td>table</td>            <td>存储结果集，供稍后处理。</td>        </tr>    </tbody></table></div><p><span style="font-size: 24px"><big>MSSQL2008数据类型</big></span></p><p><table cellspacing="2" cellpadding="2" width="98%" align="center" border="1">    <tbody>        <tr>            <td width="106">            <div align="center"><strong><font color="#000080" size="2">数据类型 </font></strong></div>            </td>            <td width="130">            <div align="center"><strong><font color="#000080" size="2">类型 </font></strong></div>            </td>            <td>            <div align="center"><strong><font color="#000080" size="2">描 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;述 </font></strong></div>            </td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">bit </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">整型 </font></div>            </td>            <td><font color="#000080" size="2">bit 数据类型是整型，其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据，如Yes 或No、True 或Fa lse 、On 或Off </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">int </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">整型 </font></div>            </td>            <td><font color="#000080" size="2">int 数据类型可以存储从- 2<sup>31</sup>(-2147483648)到2<sup>31</sup> (<skype:span onmouseup="javascript:skype_tb_imgOnOff(this,1,'0',true,'');return skype_tb_stopEvents();" class="skype_tb_injection" oncontextmenu="javascript:skype_tb_SwitchDrop(this,'0','sms=0',true);return skype_tb_stopEvents();" onmousedown="javascript:skype_tb_imgOnOff(this,2,'0',true,'');return skype_tb_stopEvents();" id="softomate_highlight_0" onmouseover="javascript:skype_tb_imgOnOff(this,1,'0',true,'');" title="Call this phone number in China (People's Republic) with Skype: +862147483647" onclick="javascript:doRunCMD('call','0',null,0);return skype_tb_stopEvents();" onmouseout="javascript:skype_tb_imgOnOff(this,0,'0',true,'');" durex="0" context="2147483 647" iamrtl="0"><font face="Tahoma"><skype:span class="skype_tb_nop">&nbsp;</skype:span><skype:span onmouseup="javascript:doSkypeFlag(this,'0',1,1);return skype_tb_stopEvents();" class="skype_tb_imgA_flex" onmousedown="javascript:doSkypeFlag(this,'0',2,1);return skype_tb_stopEvents();" id="skype_tb_droppart_0" onmouseover="javascript:doSkypeFlag(this,'0',1,1);" title="Change country code ..." onclick="javascript:doHandleChdial(this,1,'0',1);return skype_tb_stopEvents();" onmouseout="javascript:doSkypeFlag(this,'0',0,1);">&nbsp;&nbsp;<skype:span class="skype_tb_nop">&nbsp;</skype:span><skype:span class="skype_tb_imgFlag" id="skype_tb_img_f0" style="background-image: url(c:            OCUME~1xxLOCALS~1Temp__SkypeIEToolbar_Cache?c6c4cada3aefe1fda63af0b236static&uacute;mfamfam/CN.gif)"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong></skype:span>&nbsp;<skype:span class="skype_tb_nop">&nbsp;</skype:span></skype:span><strong><skype:span class="skype_tb_imgS" id="skype_tb_img_s0">&nbsp;</skype:span><skype:span class="skype_tb_injectionIn" id="skype_tb_text0"><skype:span class="skype_tb_innerText" id="skype_tb_innerText0">2147483&nbsp;647</skype:span></skype:span></strong><skype:span class="skype_tb_imgR" id="skype_tb_img_r0"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong><skype:span class="skype_tb_nop">&nbsp;</skype:span></skype:span></font></skype:span>)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">smallint </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">整型 </font></div>            </td>            <td><font color="#000080" size="2">smallint 数据类型可以存储从- 2<sup>15</sup>(-32768)到2<sup>15</sup>(32767)之间的整数。这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在数据库里占用2 字节空间 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">tinyint </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">整型 </font></div>            </td>            <td><font color="#000080" size="2">tinyint 数据类型能存储从0到255 之间的整数。它在你只打算存储有限数目的数值时很有用。 这种数据类型在数据库中占用1 个字节 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">numeric</font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">精确数值型 </font></div>            </td>            <td><font color="#000080" size="2">numeric数据类型与decimal 型相同 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">decimal </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">精确数值型 </font></div>            </td>            <td><font color="#000080" size="2">decimal 数据类型能用来存储从-10<sup>38</sup>-1到10<sup>38</sup>-1的固定精度和范围的数值型数据。使用这种数据类型时，必须指定范围和精度。 范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">money </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">货币型 </font></div>            </td>            <td><font color="#000080" size="2">money 数据类型用来表示钱和货币值。这种数据类型能存储从-9220亿到9220 亿之间的数据，精确到货币单位的万分之一 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">smallmoney </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">货币型 </font></div>            </td>            <td><font color="#000080" size="2">smallmoney 数据类型用来表示钱和货币值。这种数据类型能存储从-214748.3648 到214748.3647 之间的数据，精确到货币单位的万分之一 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">float </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">近似数值型 </font></div>            </td>            <td><font color="#000080" size="2">float 数据类型是一种近似数值类型，供浮点数使用。说浮点数是近似的，是因为在其范围内不是所有的数都能精确表示。浮点数可以是从-1.79E+308到1.79E+308 之间的任意数 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">real </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">近似数值型 </font></div>            </td>            <td><font color="#000080" size="2">real 数据类型像浮点数一样，是近似数值类型。它可以表示数值在-3.40E+38到3.40E+38之间的浮点数 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">datetime </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">日期时间型 </font></div>            </td>            <td><font color="#000080" size="2">datetime数据类型用来表示日期和时间。这种数据类型存储从1753年1月1日到9999年12月3 1日间所有的日期和时间数据， 精确到三百分之一秒或3.33毫秒 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">Smalldatetime </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">日期时间型 </font></div>            </td>            <td><font color="#000080" size="2">smalldatetime 数据类型用来表示从1900年1月1日到2079年6月6日间的日期和时间，精确到一分钟 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">cursor </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">特殊数据型 </font></div>            </td>            <td><font color="#000080" size="2">cursor 数据类型是一种特殊的数据类型，它包含一个对游标的引用。这种数据类型用在存储过程中，而且创建表时不能用 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">timestamp </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">特殊数据型 </font></div>            </td>            <td><font color="#000080" size="2">timestamp 数据类型是一种特殊的数据类型，用来创建一个数据库范围内的唯一数码。 一个表中只能有一个timestamp列。每次插入或修改一行时，timestamp列的值都会改变。尽管它的名字中有&ldquo;time&rdquo;， 但timestamp列不是人们可识别的日期。在一个数据库里，timestamp值是唯一的 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">Uniqueidentifier </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">特殊数据型 </font></div>            </td>            <td><font color="#000080" size="2">Uniqueidentifier数据类型用来存储一个全局唯一标识符，即GUID。GUID确实是全局唯一的。这个数几乎没有机会在另一个系统中被重建。可以使用NEWID 函数或转换一个字符串为唯一标识符来初始化具有唯一标识符的列 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">char </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">字符型 </font></div>            </td>            <td><font color="#000080" size="2">char数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时，你必须指定列长。当你总能知道要存储的数据的长度时，此数据 类型很有用。例如，当你按邮政编码加4个字符格式来存储数据时，你知道总要用到10个字符。此数据类型的列宽最大为8000 个字符 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">varchar </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">字符型 </font></div>            </td>            <td><font color="#000080" size="2">varchar数据类型，同char类型一样，用来存储非统一编码型字符数据。与char 型不一样，此数据类型为变长。当定义一列为该数据类型时，你要指定该列的最大长度。 它与char数据类型最大的区别是，存储的长度不是列长，而是数据的长度 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">text </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">字符型 </font></div>            </td>            <td><font color="#000080" size="2">text 数据类型用来存储大量的非统一编码型字符数据。这种数据类型最多可以有2<sup>31</sup>-1或20亿个字符 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">nchar </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">统一编码字符型 </font></div>            </td>            <td><font color="#000080" size="2">nchar 数据类型用来存储定长统一编码字符型数据。统一编码用双字节结构来存储每个字符，而不是用单字节(普通文本中的情况)。它允许大量的扩展字符。此数据类型能存储4000种字符，使用的字节空间上增加了一倍 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">nvarchar </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">统一编码字符型 </font></div>            </td>            <td><font color="#000080" size="2">nvarchar 数据类型用作变长的统一编码字符型数据。此数据类型能存储4000种字符，使用的字节空间增加了一倍 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">ntext </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">统一编码字符型 </font></div>            </td>            <td><font color="#000080" size="2">ntext 数据类型用来存储大量的统一编码字符型数据。这种数据类型能存储2<sup>30</sup> -1或将近10亿个字符，且使用的字节空间增加了一倍 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">binary </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">二进制数据类型 </font></div>            </td>            <td><font color="#000080" size="2">binary数据类型用来存储可达8000 字节长的定长的二进制数据。当输入表的内容接近相同的长度时，你应该使用这种数据类型 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">varbinary </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">二进制数据类型 </font></div>            </td>            <td><font color="#000080" size="2">varbinary 数据类型用来存储可达8000 字节长的变长的二进制数据。当输入表的内容大小可变时，你应该使用这种数据类型 </font></td>        </tr>        <tr>            <td>            <div align="center"><font color="#000080" size="2">image </font></div>            </td>            <td>            <div align="center"><font color="#000080" size="2">二进制数据类型 </font></div>            </td>            <td><font color="#000080" size="2">image 数据类型用来存储变长的二进制数据，最大可达2<sup>31</sup>-1或大约20亿字节</font></td>        </tr>    </tbody></table></p><p>&nbsp;也可以参考MSDN上更为详细的资料：</p><div class="majorTitle">SQL Server 2005 联机丛书（2008 年 11 月）<!---->数据类型 (Transact-SQL)&nbsp;<a href="http://msdn.microsoft.com/zh-cn/library/ms187752(SQL.90).aspx">http://msdn.microsoft.com/zh-cn/library/ms187752(SQL.90).aspx</a></div><div class="majorTitle">&nbsp;</div><div class="majorTitle"><div class="majorTitle">SQL Server 2008 联机丛书（2009 年 1 月）数据类型（数据库引擎）<a href="http://msdn.microsoft.com/zh-cn/library/ms187594.aspx">http://msdn.microsoft.com/zh-cn/library/ms187594.aspx</a><!----></div></div>]]></description><category>服务器技术</category><comments>http://hi.xxluntan.com/archives/41.html#comment</comments><wfw:comment>http://hi.xxluntan.com/</wfw:comment><wfw:commentRss>http://hi.xxluntan.com/feed.asp?cmt=41</wfw:commentRss><trackback:ping>http://hi.xxluntan.com/cmd.asp?act=tb&amp;id=41&amp;key=81d66c95</trackback:ping></item><item><title>IE6,IE7,FireFox兼容CSS的解决方法及CSS差别</title><author>shenlag@163.com (shenlag)</author><link>http://hi.xxluntan.com/archives/40.html</link><pubDate>Sat, 02 May 2009 18:40:58 +0800</pubDate><guid>http://hi.xxluntan.com/archives/40.html</guid><description><![CDATA[<p>一、CSS HACK<br />以下两种方法几乎能解决现今所有HACK.<br /><br />1, !important<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 随着IE7对!important的支持, !important 方法现在只针对IE6的HACK.(注意写法.记得该声明位置需要提前.)<br />&lt;style&gt;<br />#wrapper<br />{<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> <font color="#0000ff">width:</font> 100px!important; <font color="#55aa88"><br /></font>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> <font color="#0000ff">width:</font> 80px; <font color="#55aa88"><br /></font>}<br />&lt;/style&gt;<br /><br /><br />2, IE6/IE7对FireFox<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> *+html 与 *html 是IE特有的标签, firefox 暂不支持.而*+html 又为 IE7特有标签.<br />&lt;style&gt;<br />#wrapper<br />{<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> #wrapper { width: 120px; } <font color="#55aa88"><br /></font>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> *html #wrapper { width: 80px;} <font color="#55aa88"><br /></font>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> *+html #wrapper { width: 60px;} <font color="#55aa88"><br /></font>}<br />&lt;/style&gt;<br /><br />注意:*+html 对IE7的HACK 必须保证HTML顶部有如下声明：<br />&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;　&quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;<br /><br />二、万能 float 闭合(非常重要!)<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 关于 clear float 的原理可参见 [How To Clear Floats Without Structural Markup]<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 将以下代码加入Global CSS 中,给需要闭合的div加上 class=&quot;clearfix&quot; 即可,屡试不爽.<br />&lt;style&gt;<br /><br />.clearfix:after<br />{<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> content:&quot;.&quot;;<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> display:block;<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> height:0;<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> clear:both;<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> visibility:hidden;<br />}<br />.clearfix<br />{<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> display:inline-block;<br />}<br /><br />.clearfix {display:block;}<br /><font color="#55aa88"><br /></font><br />&lt;/style&gt;<br /><br />三、其他兼容技巧(再次啰嗦)<br />1, FF下给 div 设置 padding 后会导致 width 和 height 增加, 但IE不会.(可用!important解决)<br />2, 居中问题.<br />1).垂直居中.将 line-height 设置为 当前 div 相同的高度, 再通过 vertical-align: middle.( 注意内容不要换行.)<br />2).水平居中. margin: 0 auto;(当然不是万能)<br />3, 若需给 a 标签内内容加上 样式, 需要设置 display: block;(常见于导航标签)<br />4, FF 和 IE 对 BOX 理解的差异导致相差 2px 的还有设为 float的div在ie下 margin加倍等问题.<br />5, ul 标签在 FF 下面默认有 list-style 和 padding . 最好事先声明, 以避免不必要的麻烦. (常见于导航标签和内容列表)<br />6, 作为外部 wrapper 的 div 不要定死高度, 最好还加上 overflow: hidden.以达到高度自适应.<br />7, 关于手形光标. cursor: pointer. 而hand 只适用于 IE.<br /><br />1 针对firefox ie6 ie7的css样式<br />现在大部分都是用!important来hack，对于ie6和firefox测试可以正常显示，<br />但是ie7对!important可以正确解释，会导致页面没按要求显示！找到一个针<br />对IE7不错的hack方式就是使用&ldquo;*+html&rdquo;，现在用IE7浏览一下，应该没有问题了。<br />现在写一个CSS可以这样：<br /><br />#1 { color: #333; }<br />* html #1 { color: #666; }<br />*+html #1 { color: #999; }<br />那么在firefox下字体颜色显示为#333，IE6下字体颜色显示为#666，IE7下字体颜色显示为#999。<br /><br />2 css布局中的居中问题<br />主要的样式定义如下：<br /><br />body {TEXT-ALIGN: center;}<br />#center { MARGIN-RIGHT: auto; MARGIN-LEFT: auto; }<br />说明：<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 首先在父级元素定义TEXT-ALIGN: center;这个的意思就是在父级元素内的内容居中；对于IE这样设定就已经可以了。<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 但在mozilla中不能居中。解决办法就是在子元素定义时候设定时再加上&ldquo;MARGIN-RIGHT: auto;MARGIN-LEFT: auto; &rdquo;<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 需要说明的是，如果你想用这个方法使整个页面要居中，建议不要套在一个DIV里，你可以依次拆出多个div，<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 只要在每个拆出的div里定义MARGIN-RIGHT: auto;MARGIN-LEFT: auto; 就可以了。<br /><br />3 盒模型不同解释.<br /><br />#box{ width:600px; //for ie6.0- w\idth:500px; //for ff+ie6.0}<br />#box{ width:600px!important //for ff width:600px; //for ff+ie6.0 width :500px; //for ie6.0-}<br /><br />4 浮动ie产生的双倍距离<br /><br />#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离 display:inline; //使浮动忽略}<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 这里细说一下block,inline两个元素,Block元素的特点是:总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是:和其他元素在同一行上,...不可控制(内嵌元素);<br /><br />#box{ display:block; //可以为内嵌元素模拟为块元素 display:inline; //实现同一行排列的的效果 diplay:table;<br /><br />5 IE与宽度和高度的问题<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> IE不认得min-这个定义，但实际上它把正常的width和height当作有min的情况来使。这样问题就大了，如果只用宽度和高度，<br />正常的浏览器里这两个值就不会变，如果只用min-width和min-height的话，IE下面根本等于没有设置宽度和高度。<br />比如要设置背景图片，这个宽度是比较重要的。要解决这个问题，可以这样：<br />#box{ width: 80px; height: 35px;}html&gt;body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}<br /><br />6 页面的最小宽度<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> min-width是个非常方便的CSS命令，它可以指定元素最小也不能小于某个宽度，这样就能保证排版一直正确。但IE不认得这个，<br />而它实际上把width当做最小宽度来使。为了让这一命令在IE上也能用，可以把一个&lt;div&gt; 放到 &lt;body&gt; 标签下，然后为div指定一个类：<br />然后CSS这样设计：<br />#container{ min-width: 600px; width:expression(document.body.clientWidth &lt; 600? &quot;600px&quot;: &quot;auto&quot; );}<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 第一个min-width是正常的；但第2行的width使用了Javascript，这只有IE才认得，这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。<br /><br />7 清除浮动<br />.hackbox{ display:table; //将对象作为块元素级的表格显示}或者.hackbox{ clear:both;}<br />或者加入:after（伪对象）,设置在对象后发生的内容，通常和content配合使用，IE不支持此伪对象，非Ie 浏览器支持，<br />所以并不影响到IE/WIN浏览器。这种的最麻烦的......#box:after{ content: &quot;.&quot;; display: block; height: 0; clear: both; visibility: hidden;}<br /><br />8 DIV浮动IE文本产生3象素的bug<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 左边对象浮动，右边采用外补丁的左边距来定位，右边对象内的文本会离左边有3px的间距.<br /><br />#box{ float:left; width:800px;}#left{ float:left; width:50%;}#right{ width:50%;}*html #left{ margin-right:-3px; //这句是关键}<br />HTML代码&lt;div id=&quot;box&quot;&gt; &lt;div id=&quot;left&quot;&gt;&lt;/div&gt; &lt;div id=&quot;right&quot;&gt;&lt;/div&gt;&lt;/div&gt;<br /><br />9 属性选择器(这个不能算是兼容,是隐藏css的一个bug)<br />p[id]{}div[id]{}<br />这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用<br />属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的.<br /><br />10 IE捉迷藏的问题<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 当div应用复杂的时候每个栏中又有一些链接，DIV等这个时候容易发生捉迷藏的问题。<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 有些内容显示不出来，当鼠标选择这个区域是发现内容确实在页面。<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 解决办法：对#layout使用line-height属性或者给#layout使用固定高和宽。页面结构尽量简单。<br /><br />11 高度不适应<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> 高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节，特别是当内层对象使用<br />margin 或paddign 时。<br />例：<br />&lt;div id=&quot;box&quot;&gt;<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr> &lt;p&gt;p对象中的内容&lt;/p&gt;<br />&lt;/div&gt;<br />CSS：#box {background-color:#eee; }<br />#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; }<br />解决方法：在P对象上下各加2个空的div对象CSS代码：.1{height:0px;overflow:hidden;}或者为DIV加上border属性。<!--   --></p>]]></description><category>编程技术</category><comments>http://hi.xxluntan.com/archives/40.html#comment</comments><wfw:comment>http://hi.xxluntan.com/</wfw:comment><wfw:commentRss>http://hi.xxluntan.com/feed.asp?cmt=40</wfw:commentRss><trackback:ping>http://hi.xxluntan.com/cmd.asp?act=tb&amp;id=40&amp;key=01601900</trackback:ping></item><item><title>css解决IE6，IE7，firefox兼容性问题</title><author>shenlag@163.com (shenlag)</author><link>http://hi.xxluntan.com/archives/39.html</link><pubDate>Sat, 02 May 2009 18:40:21 +0800</pubDate><guid>http://hi.xxluntan.com/archives/39.html</guid><description><![CDATA[<p>在当前IE6 IE7 FifeFox三分天下的情况下,浏览器兼容性问题成为网页设计者需要考虑的问题.&nbsp;&nbsp;&nbsp;<br />区别不同浏览器的CSS hack写法：<br />区别IE6与FF： <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background:orange;*background:blue;<br />区别IE6与IE7： <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background:green !important;background:blue; <br />区别IE7与FF： <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background:orange; *background:green; <br />区别FF，IE7，IE6： <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background:orange;*background:green !important;*background:blue; <br /><br />注：IE都能识别*;标准浏览器(如FF)不能识别*；</p><p>IE6能识别*，但不能识别 !important, <br />IE7能识别*，也能识别!important; <br />FF不能识别*，但能识别!important;</p><p><table style="table-layout: fixed; border-collapse: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="0" width="500" align="center" border="1">    <tbody>        <tr>            <td>&nbsp;</td>            <td>IE6</td>            <td>IE7</td>            <td>FF</td>        </tr>        <tr>            <td>*</td>            <td>&radic;</td>            <td>&radic;</td>            <td>&times;</td>        </tr>        <tr>            <td>!important</td>            <td>&times;</td>            <td>&radic;</td>            <td>&radic;</td>        </tr>    </tbody></table><br /><br />------------------------------------------------------ <br />另外再补充一个，下划线&quot;_&quot;, <br />IE6支持下划线，IE7和firefox均不支持下划线。 <br /><br />于是大家还可以这样来区分IE6，IE7，firefox <br />: background:orange;*background:green;_background:blue; <br /><br />注：不管是什么方法，书写的顺序都是firefox的写在前面，IE7的写在中间，IE6的写在最后面。</p><p>&nbsp;</p><p>&nbsp;</p><p><strong>1.css在不同浏览器下显示效果不同<br /><br /></strong>firefox和IE对某些css样式的认定有不少区别，包括：<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; * ul和ol的默认padding值是不一样的，在Firefox中，padding-left默认值为40px左右，而IE中为0，一般设置ul{margin:0;padding:0;}就能解决大部分问题<br />&nbsp;&nbsp;&nbsp;&nbsp; * 对字体大小small的定义不同，Firefox中为13px，而IE中为16px，差别挺大，也只能设置为14px了事；(暂时没有发现)<br />&nbsp;&nbsp;&nbsp;&nbsp; * 并列排列的多个元素（图片或者链接）的代码中的空格和回车会造成元素之间的间隙，而在firefox中和在IE中显示是不一样的，IE显示空格（约8px）、firefox显示空格（约4px）<br />&nbsp;&nbsp;&nbsp;&nbsp; * 对不规范代码的兼容情况不同，IE中漏掉的关闭符号对显示不造成影响，而firefox中就会形成错乱的布局，而在ie中用到的padding和margin的负值都会被firefox解析为0，易造成布局的混乱；（我觉得好像负值在firefox中也是有显示的）<br />&nbsp;&nbsp;&nbsp;&nbsp; * firefox对于长高尺寸的严格解析会造成与设置不匹配（超出）的图片或表格将原设置div撑大；<br />&nbsp;&nbsp;&nbsp;&nbsp; * ！important属性可以在除IE浏览器的其他浏览器中起作用，因此有人利用这种差别来令一个CSS兼容多种浏览器；<br />&nbsp;&nbsp;&nbsp;&nbsp; * 未定义id的div，在IE中会与div属性中的其他设置有关，而在firefox中的位置会于div在文件中位置有关，紧随前一个div出现&hellip;&hellip;（有待尝试）<br />&nbsp;&nbsp;&nbsp;&nbsp; * 设置为float的div在ie下设置的margin会加倍的，特别是margin-left，这是ie6的一个bug。解决的方法是在这个div里面加上display:inline;<br />&nbsp;&nbsp;&nbsp;&nbsp; * 如果是动态地添加内容，高度最好不要定义。浏览器可以自动伸缩，然而如果是静态的内容，高度最好定好。（似乎有时候不会自动往下撑开，不知道具体怎么回事）<br />&nbsp;&nbsp;&nbsp;&nbsp; * FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行。IE里设置text-align:center，就居中了，但在FF中不行。所以一般两个都要设置。<br />&nbsp;&nbsp;&nbsp;&nbsp; * FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width（也没感觉，觉得设了padding，大家的高宽都变了）<br />&nbsp;&nbsp;&nbsp;&nbsp; * 在FF中可以实现的div 垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字，就垂直居中了。缺点是要控制内容不要换行。这种方法在IE中实现不了。（已试过！有用）<br />&nbsp;&nbsp;&nbsp;&nbsp; * FF: 链接加边框和背景色，需设置 display: block, 同时设置 float: left 保证不换行。<br />&nbsp;&nbsp;&nbsp;&nbsp; * 在浮动（float）的div后加clear属性，这可以解决背景的自适应高度问题。怎么加才能让不同浏览器都好使？IE中有默认行高，这是要解决的问题。<br />&nbsp;&nbsp;&nbsp;&nbsp; * FF中不支持文字的自动转行；什么word-wrap:break-word;word-break:break-all都是IE搞的鬼，根本就不符合css标准。（现在看到的解决办法都是通过编程实现） <br /><br /><strong>2.css解决不同浏览器的兼容问题的方法 （不是我们需要的方法，我们要达到的要求是尽量不写!important也能解决）</strong><br /><br />解决这种问题可以通过规范css代码，使其符合两种规范的标准样式，也可以在差别处利用！important对firefox设置属性，或者针对多种浏览器分别各自配置合适的CSS文件，再通过判断浏览器选择不同CSS实现兼容性。<br /><br />代码如下：<br /><br />&lt;!--[endif]--&gt;<br /><br />&lt;!--[endif]--&gt;<br /><br />#example { color: #333; } /* FF*/<br />* html #example { color: #666; } /* IE6 */<br />*+html #example { color: #999; } /* IE7 */<br /><br />这样在IE6中显示字体颜色是#666；在IE7中显示的字体颜色是#999；在FF中显示的颜色是#333<br /><br /><strong>3.FF解决背景的自适应高度问题</strong><br /><br />①对于背景不能自动延伸的原因上面说的很清楚，解决方法是多嵌套一个层,这个层设置浮动，并承担背景，就ok了。<br />下面就简单示意一下<br /><br />本行代码就是让背景颜色自动延续<br /><br />可以这么理解：float使得层自动获得宽和高<br /><br />但是有了第三种方法，这种方法好像并不值得推荐。<br /><br />②另一种方法就是给第一个div赋予属性值：display:table；但这种方法会造成另外一些布局上的错误。可以考虑使用，但不建议使用。<br /><br />③我想这是最重要的一种方法，但是中间问题很多。方法就是clear:both。<br /><br />.clear{clear:both}可以使高度向下延续，但是会自动产生行高；<br /><br />.clear{clear:both;height:0}在FF中清除了行高，但是IE里不认；<br /><br />.clear{clear:both;height:1%}在FF和IE中仍然不认；<br /><br />像之前写的.clear{clear:both;height:1%;font-size:0px;overflow:hidden}在IE中好使，但在FF中却不能让背景颜色延续，除非加上边框。！挺有意思，还是不太懂<br /><br />.clear{clear:both;line-height:1px}好使！我理解是清的这个容器默认是行元素，所以高对它不起作用，所以你无论把height设置为几都没有效果，而line-height本身就是作用于行元素的，所以好使！<br /><br />上面理解的不对!重新理解是：IE里面有默认的行高，必须把行高给清掉，可以用font-size:0px或line-height:0px；但是这里又有一个问题，就是height的值不要用百分数，没有用！</p>]]></description><category>编程技术</category><comments>http://hi.xxluntan.com/archives/39.html#comment</comments><wfw:comment>http://hi.xxluntan.com/</wfw:comment><wfw:commentRss>http://hi.xxluntan.com/feed.asp?cmt=39</wfw:commentRss><trackback:ping>http://hi.xxluntan.com/cmd.asp?act=tb&amp;id=39&amp;key=66d7e9ed</trackback:ping></item><item><title>教你设置、查看、分析IIS日志（附带工具）</title><author>shenlag@163.com (shenlag)</author><link>http://hi.xxluntan.com/archives/38.html</link><pubDate>Wed, 29 Apr 2009 01:00:42 +0800</pubDate><guid>http://hi.xxluntan.com/archives/38.html</guid><description><![CDATA[<p><font color="#ff0000">日志的重要性已经越来越受到程序员的重视,IIS的日志更是不言而喻。<br /><br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IIS日志建议使用W3C扩充日志文件格式，这也是IIS 5.0已上默认的格式，可以指定每天记录客户IP地址、用户名、服务器端口、方法、URI资源、URI查询、协议状态、用户代理，每天要审查日志。如图1所示。&nbsp;&nbsp;<br /><br /><img src="http://tech.ccidnet.com/pub/attachment/2004/11/361377.jpg" border="0" alt="" /><br /><br />IIS 的WWW日志文件默认位置为 %systemroot%\system32\logfiles\w3svc1\，（例如：我的则是在 C:\WINDOWS\system32\LogFiles\W3SVC1\），默认每天一个日志。<br /><br /><span style="color: red">建议不要使用默认的目录，更换一个记录日志的路径，同时设置日志访问权限，只允许管理员和SYSTEM为完全控制的权限。&nbsp;&nbsp;&nbsp;</span>如图2所示。<br /><br /><img src="http://tech.ccidnet.com/pub/attachment/2004/11/361379.jpg" border="0" alt="" /><br /><br /><br /><span style="color: red">如果发现IIS日志再也不记录了，解决办法：<br />看看你有没有启用日志记录：你的网站--&gt; 属性 --&gt;&ldquo;网站&rdquo;--&gt;&ldquo;启用日志&rdquo;是否勾选。<br /></span><br />日志文件的名称格式是：ex+年份的末两位数字+月份+日期。<br />( 如2002年8月10日的WWW日志文件是ex020810.log ）<br /><br />IIS的日志文件都是文本文件，可以使用任何编辑器或相关软件打开，例如记事本程序，AWStats工具。<br /><br />开头四行都是日志的说明信息<br /><br /><font color="#0000ff">#Software&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 生成软件<br />#Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 版本<br />#Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 日志发生日期<br />#Fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段，显示记录信息的格式，可由IIS自定义。<br /><br />日志的主体是一条一条的请求信息，请求信息的格式是由#Fields定义的，每个字段都有空格隔开。<br /><br />字段解释<br /><br />data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 日期<br />time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 时间<br />cs-method&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请求方法<br />cs-uri-stem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请求文件<br />cs-uri-query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请求参数<br />cs-username&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 客户端用户名<br />c-ip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 客户端IP<br />cs-version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 客户端协议版本<br />cs(User-Agent)&nbsp;&nbsp; 客户端浏览器<br />cs(Referer)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 引用页<br /></font><br /><span style="color: red">下面列举说明日志文件的部分内容</span>（每个日志文件都有如下的头4行）： <br />#Software: Microsoft Internet Information Services 6.0<br />#Version: 1.0<br />#Date: 2007-09-21 02:38:17<br />#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status<br /><br />2007-09-21 01:10:51 10.152.8.17 - 10.152.8.2 80&nbsp;&nbsp;<br />GET /seek/images/ip.gif - 200 Mozilla/5.0+(X11;+U;+Linux+2.4.2-2+i686;+en-US;+0.7) <br /><br />　　上面各行分别清楚地记下了远程客户端的：<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 连接时间&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2007-09-21 01:10:51<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP地址&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.152.8.17 - 10.152.8.2&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 端&nbsp;&nbsp;&nbsp;&nbsp; 口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请求动作&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GET /seek/images/ip.gif - 200<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 返回结果&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 200 （用数字表示，如页面不存在则以404返回）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 浏览器类型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mozilla/5.0+<br />系统等相关信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; X11;+U;+Linux+2.4.2-2+i686;+en-US;+0.7<br /><br /><span style="color: red"><br /><span style="color: red">附：IIS的FTP日志<br /><br /><span style="color: #000000">IIS的FTP日志文件默认位置为%systemroot%\system32\logfiles\MSFTPSVC1\，对于绝大多数系统而言（如果安装系统时定义了系统存放目录则根据实际情况修改）则是C:\winnt\system32\logfiles\ MSFTPSVC1\，和IIS的WWW日志一样，也是默认每天一个日志。日志文件的名称格式是：ex+年份的末两位数字+月份+日期，如2002年8月10日的WWW日志文件是ex020810.log。它也是文本文件，同样可以使用任何编辑器打开，例如记事本程序。和IIS的WWW日志相比，IIS的FTP日志文件要丰富得多。下面列举日志文件的部分内容。 <br /></span><br /><span style="color: #000000">#Software: Microsoft Internet Information Services 6.0<br />#Version: 1.0 <br />#Date: 2002-07-24 01:32:07 <br />#Fields: time cip csmethod csuristem scstatus <br />03:15:20 210.12.195.3 [1]USER administator 331　 <br />（IP地址为210.12.195.2用户名为administator的用户试图登录） <br /><br />03:16:12 210.12.195.2 [1]PASS - 530　（登录失败）<br /></span><span style="color: #000000"><br />03:19:16 210.12.195.2 [1]USER administrator 331　 <br />（IP地址为210.12.195.2用户名为administrator的用户试图登录） <br /></span><br />03:19:24 210.12.195.2 [1]PASS - 230　（登录成功） <br />03:19:49 210.12.195.2 [1]MKD brght 550　（新建目录失败） <br />03:25:26 210.12.195.2 [1]QUIT - 550　（退出FTP程序） <br /><br /><span style="color: #000000">有经验的用户可以通过这段FTP日志文件的内容看出，</span>来自IP地址210.12.195.2<span style="color: #000000">的远程客户从</span>2002年7月24日3：15<span style="color: #000000">开始试图登录此服务器，先后</span>换了2次<span style="color: #000000">用户名和口令才成功，最终以</span>administrator<span style="color: #000000">的账户成功登录。这时候就应该提高警惕，因为administrator账户极有可能泄密了，为了安全考虑，应该给此账户更换密码或者重新命名此账户。<br /><br />如何辨别服务器是否有人曾经利用过UNICODE漏洞入侵过呢？可以在日志里看到类似如下的记录：&nbsp;&nbsp;<br />如果有人曾经执行过copy、del、echo、.bat等具有入侵行为的命令时，会有以下类似的记录： <br />13:46:07 127.0.0.1 GET /scripts/..＼../winnt/system32/cmd&quot;.exe 401 <br />13:46:07 127.0.0.1 GET /scripts/..＼../winnt/system32/cmd&quot;.exe 200&nbsp;&nbsp;<br />13:47:37 127.0.0.1 GET /scripts/..＼../winnt/system32/cmd&quot;.exe 401 <br /></span></span><br /><br />相关软件介绍：<br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果入侵者技术比较高明，会删除IIS日志文件以抹去痕迹，这时可以到事件查看器看来自W3SVC的警告信息，往往能找到一些线索。当然，对于访问量特别大的Web服务器，仅靠人工分析几乎是不可能的--数据太多了！可以借助第三方日志分析工具，如Faststs Analyzer、Logs2Intrusions v.1.0等。此处仅仅介绍一下Logs2Intrusions日志分析工具。它是一个由Turkish Security Network公司开发的自由软件，是免费的日志分析工具，可以分析IIS 4/5、Apache和其他日志文件。可以到<a href="http://www.trsecurity.net/logs2intrusions" target="_blank">http://www.trsecurity.net/logs2intrusions</a>下载最新的版本。该软件简单易用，下面是它的主界面，如图3所示。 <br /><br /><img src="http://tech.ccidnet.com/pub/attachment/2004/11/361381.jpg" border="0" alt="" /><br /><br /><br />单击【Select】按钮后选择要分析的日志文件，然后单击【Next】按钮，在出现的窗口中单击【Begin Work】按钮即可开始分析，如图4所示。&nbsp;&nbsp;<br /><br /><img src="http://tech.ccidnet.com/pub/attachment/2004/11/361383.gif" border="0" alt="" /><br /><br /><br />如图4所示，它表明已经发觉入侵的痕迹。如果没有发现痕迹则弹出如图5所示的对话框。&nbsp;&nbsp;<br /><br /><img src="http://tech.ccidnet.com/pub/attachment/2004/11/361385.jpg" border="0" alt="" /><br /><br /><br />在发现痕迹后单击【Next】按钮继续，如图6所示。 <br /><br /><img src="http://tech.ccidnet.com/pub/attachment/2004/11/361387.jpg" border="0" alt="" /><br /><br /><br />【View Report】按钮是查看报告，【Save Report】按钮是保存报告，【New Report】按钮是生成新报告。下面是报告的例子，如图7所示。 <br /><br /><br /><img src="http://tech.ccidnet.com/pub/attachment/2004/11/361389.jpg" border="0" alt="" /><br /><br />在&quot;Intrusion Attempt&quot;列中列出了超链接，选择它可以得到Trsecurity公司的专家的建议。和该软件同一目录中的sign.txt是入侵行为特征的关键字，用户可以根据新的漏洞的发现而随时补充。<br /><br /><br />&nbsp;</p><h2><span style="font-size: 14pt">AWStats简介：Apache/IIS的日志分析工具<br /></span><a style="font-size: 12pt" href="http://www.chedong.com/tech/awstats.html">http://www.chedong.com/tech/awstats.html</a></h2><h2 dir="ltr" style="font-size: 12pt"><span style="font-size: 12pt"><br />不同的日志类型，其存储的位置也不同：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应用程序日志、安全日志、系统日志、DNS日志默认位置：%systemroot%\system32\config<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Web,Ftp的日志的默认位置在：%systemroot%\system32\logfiles<br />&nbsp;&nbsp; 具体参看这篇文章: <a href="http://iask.sina.com.cn/browse/browse_detail.php?qid=1651775"><font color="#800080" size="2">Win2k日志详细</font></a><br /><br />IIS日志的启用和设置<br />&nbsp;&nbsp;<a href="http://support.microsoft.com/default.aspx?scid=kb;zh-cn;300390"><font size="2">如何在 Windows 2000 中启用 IIS 日志记录站点活动</font></a><br /><br />日志分析工具<br />日志的分析工具很多，<font size="2"><span style="font-size: 10.5pt; line-height: 173%"><font face="Arial">AWStats是一个优秀的跨平台的开源日志分析工具<br /></font></span>&nbsp;&nbsp;</font><a class="postTitle2" href="http://freemantc.cnblogs.com/archive/2005/11/14/276086.html"><font size="2">Awstats 安装使用说明</font></a><font size="2"> <br /></font><br />IIS日志的内容其实是一些记录的文本<br /><a class="singleposttitle" href="http://jzywh.cnblogs.com/archive/2005/06/23/179965.html"><font size="2">IIS日志分析</font></a><font size="2"> <br /><br /><span style="font-size: 12pt">如何在 Windows 2000 中启用 IIS 日志记录站点活动 ( MSDN )</span><br /><a href="http://support.microsoft.com/default.aspx?scid=kb;zh-cn;300390">http://support.microsoft.com/default.aspx?scid=kb;zh-cn;300390</a></font></span></h2><p>&nbsp;</p><p>&nbsp;</p><p><u><font color="#800080"><a href="http://hi.baidu.com/jokulpine/blog/item/b5143b1b1d7dab1a8618bf53%2Ehtml">http://hi.baidu.com/jokulpine/blog/item/b5143b1b1d7dab1a8618bf53%2Ehtml</a></font></u></p>]]></description><category>服务器技术</category><comments>http://hi.xxluntan.com/archives/38.html#comment</comments><wfw:comment>http://hi.xxluntan.com/</wfw:comment><wfw:commentRss>http://hi.xxluntan.com/feed.asp?cmt=38</wfw:commentRss><trackback:ping>http://hi.xxluntan.com/cmd.asp?act=tb&amp;id=38&amp;key=e95792cd</trackback:ping></item><item><title>彻底解决“系统管理员设置了系统策略，禁止进行此安装”</title><author>shenlag@163.com (shenlag)</author><link>http://hi.xxluntan.com/archives/37.html</link><pubDate>Mon, 20 Apr 2009 10:11:59 +0800</pubDate><guid>http://hi.xxluntan.com/archives/37.html</guid><description><![CDATA[<div forimg="1">这两天<strong><a target="_blank" href="http://www.xxluntan.com/">新乡</a></strong>一直阴天下雨，呵呵，虽然挺喜欢雨，但耽误了很多事情，本来安排昨天为<strong><a target="_blank" href="http://www.xxluntan.com">新乡论坛</a></strong>的活动探路了，因为下雨，也没去成，郁闷中&hellip;&hellip;&nbsp;</div><div forimg="1">&nbsp;</div><div forimg="1">今天重做了系统，因为用的是新盘，所以遇到些问题，其中包括：&ldquo;<strong>系统管理员设置了系统策略，禁止进行此安装</strong>&rdquo;，后解决，解决方法如下：</div><div forimg="1">&nbsp;</div><div forimg="1"><img alt="" src="http://hi.xxluntan.com/upload/2009/4/02ded2a2ac00188fcaefd0e4.jpg" /></div><p>&nbsp;</p><div forimg="1">&nbsp;</div><p>&nbsp;</p><p>在&ldquo;开始-运行&rdquo;中输入regedit.exe，点&ldquo;确定&rdquo;打开注册表；<br />删除 <font color="#ff0000">HKEY_CLASSES_ROOT\Installer\Products\4080110900063D11C8EF10054038389C</font> 注册表项目，搞定！</p>]]></description><category>电脑技术</category><comments>http://hi.xxluntan.com/archives/37.html#comment</comments><wfw:comment>http://hi.xxluntan.com/</wfw:comment><wfw:commentRss>http://hi.xxluntan.com/feed.asp?cmt=37</wfw:commentRss><trackback:ping>http://hi.xxluntan.com/cmd.asp?act=tb&amp;id=37&amp;key=ae7ec059</trackback:ping></item><item><title>CSS兼容IE6、IE7、火狐（Firefox）技巧集合2</title><author>shenlag@163.com (shenlag)</author><link>http://hi.xxluntan.com/archives/36.html</link><pubDate>Thu, 09 Apr 2009 15:27:08 +0800</pubDate><guid>http://hi.xxluntan.com/archives/36.html</guid><description><![CDATA[<p><strong>FF与IE <br /><br />1. Div居中问题</strong> <br /><br />div设置 margin-left, margin-right 为 auto 时已经居中，IE 不行，IE需要设定body居中，首先在父级元素定义text-algin: center;这个的意思就是在父级元素内的内容居中。 <br /><br /><b>2.链接(a标签)的边框与背景</b> <br /><br />a链接加边框和背景色，需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。 <br /><br /><b>3.超链接访问过后hover样式就不出现的问题</b> <br /><br />被点击访问过的超链接样式不在具有hover和active了,很多人应该都遇到过这个问题,解决方法是改变CSS属性的排列顺序: L-V-H-A <br />Code: <br />＜style type=&quot;text/css&quot;&gt; <br />＜!-- <br />a:link {} <br />a:visited {} <br />a:hover {} <br />a:active {} <br />--&gt; <br />＜/style&gt; <br /><br /><b>4. 游标手指cursor </b><br /><br />cursor: pointer 可以同时在 IE FF 中显示游标手指状， hand 仅 IE 可以 <br /><br /><b>5.UL的padding与margin </b><br /><br />ul标签在FF中默认是有padding值的,而在IE中只有margin默认有值,所以先定义 ul{margin:0;padding:0;}就能解决大部分问题 <br /><br /><b>6. FORM标签</b> <br /><br />这个标签在IE中,将会自动margin一些边距,而在FF中margin则是0,因此,如果想显示一致,所以最好在css中指定margin和 padding,针对上面两个问题,我的css中一般首先都使用这样的样式ul,form{margin:0;padding:0;}给定义死了,所以后面就不会为这个头疼了. <br /><br /><b>7. BOX模型解释不一致问题</b> <br /><br />在FF和IE中的BOX模型解释不一致导致相差2px解决方法：div{margin:30px!important;margin:28px;} 注意这两个margin的顺序一定不能写反， important这个属性IE不能识别，但别的浏览器可以识别。所以在IE下其实解释成这样： div{maring:30px;margin:28px}重复定义的话按照最后一个来执行，所以不可以只写margin:xx px!important; <br />#box{ width:600px; //for ie6.0- w\idth:500px; //for ff+ie6.0} <br />#box{ width:600px!important //for ff width:600px; //for ff+ie6.0 width /**/:500px; //for ie6.0-} <br /><br /><b>8.属性选择器(这个不能算是兼容,是隐藏css的一个bug) </b><br /><br />p[id]{}div[id]{} <br />这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用.属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的. <br /><br /><b>9.最狠的手段 - !important; </b><br /><br />如果实在没有办法解决一些细节问题,可以用这个方法.FF对于&rdquo;!important&rdquo;会自动优先解析,然而IE则会忽略.如下 <br />.tabd1{ <br />background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/ <br />background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */} <br />值得注意的是，一定要将xxxx !important 这句放置在另一句之上，上面已经提过 <br /><br /><strong>10.IE,FF的默认值问题 <br /><br /></strong>或许你一直在抱怨为什么要专门为IE和FF写不同的CSS，为什么IE这样让人头疼，然后一边写css，一边咒骂那个可恶的M$ IE.其实对于css的标准支持方面，IE并没有我们想象的那么可恶，关键在于IE和FF的默认值不一样而已，掌握了这个技巧，你会发现写出兼容FF和 IE的css并不是那么困难，或许对于简单的css，你完全可以不用&rdquo;!important&rdquo;这个东西了。 <br />我们都知道，浏览器在显示网页的时候，都会根据网页的css样式表来决定如何显示，但是我们在样式表中未必会将所有的元素都进行了具体的描述，当然也没有必要那么做，所以对于那些没有描述的属性，浏览器将采用内置默认的方式来进行显示，譬如文字，如果你没有在css中指定颜色，那么浏览器将采用黑色或者系统颜色来显示，div或者其他元素的背景，如果在css中没有被指定，浏览器则将其设置为白色或者透明，等等其他未定义的样式均如此。所以有很多东西出现 FF和IE显示不一样的根本原因在于它们的默认显示不一样，而这个默认样式该如何显示我知道在w3中有没有对应的标准来进行规定，因此对于这点也就别去怪罪IE了。 <br /><br /><b>11.为什么FF下文本无法撑开容器的高度</b> <br /><br />标准浏览器中固定高度值的容器是不会象IE6里那样被撑开的,那我又想固定高度,又想能被撑开需要怎样设置呢？办法就是去掉height设置min- height:200px; 这里为了照顾不认识min-height的IE6 可以这样定义: <br /><br />{ <br />height:auto!important; <br />height:200px; <br />min-height:200px; <br />} <br /><br /><b>12.FireFox下如何使连续长字段自动换行</b> <br /><br />众所周知IE中直接使用 word-wrap:break-word 就可以了, FF中我们使用JS插入 <br />的方法来解决 <br /><br />＜style type=&quot;text/css&quot;&gt; <br />＜!-- <br />div { <br />width:300px; <br />word-wrap:break-word; <br />border:1px solid red; <br />} <br />--&gt; <br />＜/style&gt; <br /><br />＜div id=&quot;ff&quot;&gt;aaaaaaaaaaaaaaaaaaaaaaaaaaaa＜/div&gt; <br /><br />＜scrīpt type=&quot;text/javascrīpt&quot;&gt; <br />/* ＜![CDATA[ */ <br />function toBreakWord(el, intLen){ <br />var ōbj=document.getElementById(el); <br />var strContent=obj.innerHTML; <br />var strTemp=&quot;&quot;; <br />while(strContent.length&gt;intLen){ <br />strTemp+=strContent.substr(0,intLen)+&quot; <br />&quot;; <br />strContent=strContent.substr(intLen,strContent.length); <br />} <br />strTemp+=&quot; <br />&quot;+strContent; <br />obj.innerHTML=strTemp; <br />} <br />if(document.getElementById &amp;&amp; !document.all) toBreakWord(&quot;ff&quot;, 37); <br />/* ]]&gt; */ <br />＜/scrīpt&gt; <br /><br /><strong>13.为什么IE6下容器的宽度和FF解释不同呢 <br /><br /></strong>＜?xml version=&quot;1.0&quot; encoding=&quot;gb2312&quot;?&gt; <br />＜!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt; <br />＜meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot; /&gt; <br />＜style type=&quot;text/css&quot;&gt; <br />＜!-- <br />div { <br />cursor:pointer; <br />width:200px; <br />height:200px; <br />border:10px solid red <br />} <br />--&gt; <br />＜/style&gt; <br />＜div ōnclick=&quot;alert(this.offsetWidth)&quot;&gt;让FireFox与IE兼容＜/div&gt; <br /><br />问题的差别在于容器的整体宽度有没有将边框（border）的宽度算在其内,这里IE6解释为200PX ,而FF则解释为220PX,那究竟是怎么导致的问题呢？大家把容器顶部的xml去掉就会发现原来问题出在这,顶部的申明触发了IE的qurks mode,关于qurks mode、standards mode的相关知识,请参考:http://www.microsoft.com/china/msdn/library/webservices /asp.net/ <br />ASPNETusStan.mspx?mfr=true <br /><br />IE6,IE7,FF <br /><br />IE7.0出来了，对CSS的支持又有新问题。浏览器多了，网Bpx; /*For IE7 &amp; IE6*/ <br />_height:20px; /*For IE6*/ <br /><br />注意顺序。 <br /><br />这样也属于CSS HACK，不过没有上面这样简洁。 <br />#example { color: #333; } /* Moz */ <br />* html #example { color: #666; } /* IE6 */ <br />*+html #example { color: #999; } /* IE7 */ <br /><br /><br />第二种，是使用IE专用的条件注释 <br /><br />＜!--其他浏览器 --&gt; <br />＜link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css.css&quot; /&gt; <br /><br />＜!--[if IE 7]&gt; <br />＜!-- 适合于IE7 --&gt; <br />＜link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;ie7.css&quot; /&gt; <br />＜![endif]--&gt; <br /><br />＜!--[if lte IE 6]&gt; <br />＜!-- 适合于IE6及一下 --&gt; <br />＜link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;ie.css&quot; /&gt; <br />＜![endif]--&gt; <br /><br /><b>第三种，css filter的办法，以下为经典从国外网站翻译过来的。. </b><br /><br />新建一个css样式如下： <br />#item { <br />width: 200px; <br />height: 200px; <br />background: red; <br />} <br /><br />新建一个div,并使用前面定义的css的样式： <br />＜div id=&quot;item&quot;&gt;some text here＜/div&gt; <br /><br />在body表现这里加入lang属性,中文为zh： <br />＜body lang=&quot;en&quot;&gt; <br /><br />现在对div元素再定义一个样式： <br />*:lang(en) #item{ <br />background:green !important; <br />} <br /><br />这样做是为了用!important覆盖原来的css样式,由于:lang选择器ie7.0并不支持,所以对这句话不会有任何作用,于是也达到了 ie6.0下同样的效果,但是很不幸地的是,safari同样不支持此属性,所以需要加入以下css样式： <br />#item:empty { <br />background: green !important <br />} <br />:empty选择器为css3的规范,尽管safari并不支持此规范,但是还是会选择此元素,不管是否此元素存在,现在绿色会现在在除ie各版本以外的浏览器上。 <br /><br />对IE6和FF的兼容可以考虑以前的!important 个人比较喜欢用第一种，简洁，兼容性比较好。<br />&nbsp;</p>]]></description><category>编程技术</category><comments>http://hi.xxluntan.com/archives/36.html#comment</comments><wfw:comment>http://hi.xxluntan.com/</wfw:comment><wfw:commentRss>http://hi.xxluntan.com/feed.asp?cmt=36</wfw:commentRss><trackback:ping>http://hi.xxluntan.com/cmd.asp?act=tb&amp;id=36&amp;key=eef9632c</trackback:ping></item><item><title>CSS兼容IE6、IE7、火狐（Firefox）技巧集合1</title><author>shenlag@163.com (shenlag)</author><link>http://hi.xxluntan.com/archives/35.html</link><pubDate>Thu, 09 Apr 2009 15:23:11 +0800</pubDate><guid>http://hi.xxluntan.com/archives/35.html</guid><description><![CDATA[<p>CSS对浏览器的兼容性有时让人很头疼，或许当你了解当中的技巧跟原理，就会觉得也不是难事，从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了一下。对于web2.0的过度，请尽量用xhtml格式写代码，而且DOCTYPE 影响 CSS 处理，作为W3C的标准，一定要加 DOCTYPE声明。 <br /><br />CSS技巧 <br /><br /><b>1.div的垂直居中问题</b> <br /><br />vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字，就垂直居中了。缺点是要控制内容不要换行 <br /><br /><b>2. margin加倍的问题</b> <br /><br />设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决方案是在这个div里面加上display:inline; <br />例如： <br />＜#div id=&rdquo;imfloat&rdquo;&gt; <br />相应的css为 <br />#imfloat{ <br />float:left; <br />margin:5px;/*IE下理解为10px*/ <br />display:inline;/*IE下再理解为5px*/} <br /><br /><b>3.浮动ie产生的双倍距离</b> <br /><br />#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离 display:inline; //使浮动忽略} <br />这里细说一下block与inline两个元素：block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素); <br />#box{ display:block; //可以为内嵌元素模拟为块元素 display:inline; //实现同一行排列的效果 diplay:table; <br /><br /><b>4 IE与宽度和高度的问题 </b><br /><br />IE不认得min-这个定义，但实际上它把正常的width和height当作有min的情况来使。这样问题就大了，如果只用宽度和高度，正常的浏览器里这两个值就不会变，如果只用min-width和min-height的话，IE下面根本等于没有设置宽度和高度。 <br />比如要设置背景图片，这个宽度是比较重要的。要解决这个问题，可以这样： <br />#box{ width: 80px; height: 35px;}html&gt;body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;} <br /><br /><b>5.页面的最小宽度</b> <br /><br />min-width是个非常方便的CSS命令，它可以指定元素最小也不能小于某个宽度，这样就能保证排版一直正确。但IE不认得这个，而它实际上把 width当做最小宽度来使。为了让这一命令在IE上也能用，可以把一个＜div&gt; 放到 ＜body&gt; 标签下，然后为div指定一个类,然后CSS这样设计： <br />#container{ min-width: 600px; width:expression(document.body.clientWidth ＜ 600? &quot;600px&quot;: &quot;auto&quot; );} <br />第一个min-width是正常的；但第2行的width使用了Javascript，这只有IE才认得，这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。 <br /><br /><b>6.DIV浮动IE文本产生3象素的bug</b> <br /><br />左边对象浮动，右边采用外补丁的左边距来定位，右边对象内的文本会离左边有3px的间距. <br />#box{ float:left; width:800px;} <br />#left{ float:left; width:50%;} <br />#right{ width:50%;} <br />*html #left{ margin-right:-3px; //这句是关键} <br />＜div id=&quot;box&quot;&gt; <br />＜div id=&quot;left&quot;&gt;＜/div&gt; <br />＜div id=&quot;right&quot;&gt;＜/div&gt; <br />＜/div&gt; <br /><br /><b>7.IE捉迷藏的问题 </b><br /><br />当div应用复杂的时候每个栏中又有一些链接，DIV等这个时候容易发生捉迷藏的问题。 <br />有些内容显示不出来，当鼠标选择这个区域是发现内容确实在页面。 解决办法：对#layout使用line-height属性 或者给#layout使用固定高和宽。页面结构尽量简单。 <br /><br /><strong>8.float的div闭合;清除浮动;自适应高度; <br /><br /></strong>①例如：＜#div id=&rdquo;floatA&rdquo; &gt;＜#div id=&rdquo;floatB&rdquo; &gt;＜#div id=&rdquo;NOTfloatC&rdquo; &gt;这里的NOTfloatC并不希望继续平移，而是希望往下排。(其中floatA、floatB的属性已经设置为float:left;) <br />这段代码在IE中毫无问题，问题出在FF。原因是NOTfloatC并非float标签，必须将float标签闭合。在 ＜#div class=&rdquo;floatB&rdquo;&gt; ＜#div class=&rdquo;NOTfloatC&rdquo;&gt;之间加上 ＜#div class=&rdquo;clear&rdquo;&gt;这个div一定要注意位置，而且必须与两个具有float属性的div同级，之间不能存在嵌套关系，否则会产生异常。并且将clear这种样式定义为为如下即可： .clear{ clear:both;} <br /><br />②作为外部 wrapper 的 div 不要定死高度,为了让高度能自动适应，要在wrapper里面加上overflow:hidden; 当包含float的box的时候，高度自动适应在IE下无效，这时候应该触发IE的layout私有属性(万恶的IE啊！)用zoom:1;可以做到，这样就达到了兼容。 <br />例如某一个wrapper如下定义： <br />.colwrapper{ overflow:hidden; zoom:1; margin:5px auto;} <br /><br />③对于排版,我们用得最多的css描述可能就是float:left.有的时候我们需要在n栏的float div后面做一个统一的背景,譬如: <br />＜div id=&rdquo;page&rdquo;&gt; <br />＜div id=&rdquo;left&rdquo;&gt;＜/div&gt; <br />＜div id=&rdquo;center&rdquo;&gt;＜/div&gt; <br />＜div id=&rdquo;right&rdquo;&gt;＜/div&gt; <br />＜/div&gt; <br />比如我们要将page的背景设置成蓝色,以达到所有三栏的背景颜色是蓝色的目的,但是我们会发现随着left center right的向下拉长,而page居然保存高度不变,问题来了,原因在于page不是float属性,而我们的page由于要居中,不能设置成 float,所以我们应该这样解决 <br />＜div id=&rdquo;page&rdquo;&gt; <br />＜div id=&rdquo;bg&rdquo; style=&rdquo;float:left;width:100%&rdquo;&gt; <br />＜div id=&rdquo;left&rdquo;&gt;＜/div&gt; <br />＜div id=&rdquo;center&rdquo;&gt;＜/div&gt; <br />＜div id=&rdquo;right&rdquo;&gt;＜/div&gt; <br />＜/div&gt; <br />＜/div&gt; <br />再嵌入一个float left而宽度是100%的DIV解决之 <br /><br />④万能float 闭合(非常重要!) <br />关于 clear float 的原理可参见 [How To Clear Floats Without Structural Markup],将以下代码加入Global CSS 中,给需要闭合的div加上 class=&quot;clearfix&quot; 即可,屡试不爽. <br />/* Clear Fix */ <br />.clearfix:after { content:&quot;.&quot;; display:block; height:0; clear:both; visibility:hidden; } <br />.clearfix { display:inline-block; } <br />/* Hide from IE Mac */ <br />.clearfix {display:block;} <br />/* End hide from IE Mac */ <br />/* end of clearfix */ <br />或者这样设置：.hackbox{ display:table; //将对象作为块元素级的表格显示} <br /><br /><b>９．高度不适应 </b><br /><br />高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节，特别是当内层对象使用margin 或paddign 时。 <br />例： <br />#box {background-color:#eee; } <br />#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; } <br />＜div id=&quot;box&quot;&gt; <br />＜p&gt;p对象中的内容＜/p&gt; <br />＜/div&gt; <br />解决方法：在P对象上下各加2个空的div对象CSS代码：.1{height:0px;overflow:hidden;}或者为DIV加上border属性。 <br /><br /><b>10 .IE6下为什么图片下有空隙产生</b> <br /><br />解决这个BUG的方法也有很多,可以是改变html的排版,或者设置img 为display:block 或者设置vertical-align 属性为vertical-align:top 　 bottom 　middle 　text-bottom 都可以解决. <br /><br /><b>11.如何对齐文本与文本输入框</b> <br /><br />加上 vertical-align:middle; <br />＜style type=&quot;text/css&quot;&gt; <br />＜!-- <br />input { <br />width:200px; <br />height:30px; <br />border:1px solid red; <br />vertical-align:middle; <br />} <br />--&gt; <br />＜/style&gt; <br /><br /><b>12.web标准中定义id与class有什么区别吗</b> <br /><br />一.web标准中是不容许重复ID的,比如 div id=&quot;aa&quot; 不容许重复2次,而class 定义的是类,理论上可以无限重复, 这样需要多次引用的定义便可以使用他. <br /><br />二.属性的优先级问题 <br />ID 的优先级要高于class,看上面的例子 <br /><br />三.方便JS等客户端脚本,如果在页面中要对某个对象进行脚本操作,那么可以给他定义一个ID,否则只能利用遍历页面元素加上指定特定属性来找到它,这是相对浪费时间资源,远远不如一个ID来得简单. <br /><br /><b>13. LI中内容超过长度后以省略号显示的方法</b> <br /><br />此方法适用与IE与OP浏览器 <br /><br />＜style type=&quot;text/css&quot;&gt; <br />＜!-- <br />li { <br />width:200px; <br />white-space:nowrap; <br />text-overflow:ellipsis; <br />-o-text-overflow:ellipsis; <br />overflow: hidden; <br />} <br /><br />--&gt; <br />＜/style&gt; <br /><br /><b>14.为什么web标准中IE无法设置滚动条颜色了</b> <br /><br />解决办法是将body换成html <br />＜!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt; <br />＜meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot; /&gt; <br />＜style type=&quot;text/css&quot;&gt; <br />＜!-- <br />html { <br />scrollbar-face-color:#f6f6f6; <br />scrollbar-highlight-color:#fff; <br />scrollbar-shadow-color:#eeeeee; <br />scrollbar-3dlight-color:#eeeeee; <br />scrollbar-arrow-color:#000; <br />scrollbar-track-color:#fff; <br />scrollbar-darkshadow-color:#fff; <br />} <br />--&gt; <br />＜/style&gt; <br /><br /><b>15.为什么无法定义1px左右高度的容器</b> <br /><br />IE6下这个问题是因为默认的行高造成的,解决的方法也有很多,例如:overflow:hidden 　 zoom:0.08 　 line-height:1px <br /><br />16.怎么样才能让层显示在FLASH之上呢 <br /><br />解决的办法是给FLASH设置透明 <br />＜param name=&quot;wmode&quot; value=&quot;transparent&quot; /&gt; <br /><br /><b>17.怎样使一个层垂直居中于浏览器中</b> <br /><br />这里我们使用百分比绝对定位,与外补丁负值的方法,负值的大小为其自身宽度高度除以二 <br />＜style type=&quot;text/css&quot;&gt; <br />＜!-- <br />div { <br />position:absolute; <br />top:50%; <br />lef:50%; <br />margin:-100px 0 0 -100px; <br />width:200px; <br />height:200px; <br />border:1px solid red; <br />} <br />--&gt; <br />＜/style&gt;</p>]]></description><category>编程技术</category><comments>http://hi.xxluntan.com/archives/35.html#comment</comments><wfw:comment>http://hi.xxluntan.com/</wfw:comment><wfw:commentRss>http://hi.xxluntan.com/feed.asp?cmt=35</wfw:commentRss><trackback:ping>http://hi.xxluntan.com/cmd.asp?act=tb&amp;id=35&amp;key=c99ab3af</trackback:ping></item><item><title>phpmyadmin提示“无法载入 mysql 扩展，请检查 PHP 配置”绝对解决方法</title><author>shenlag@163.com (shenlag)</author><link>http://hi.xxluntan.com/archives/34.html</link><pubDate>Mon, 16 Feb 2009 00:13:33 +0800</pubDate><guid>http://hi.xxluntan.com/archives/34.html</guid><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;因为<strong><a target="_blank" href="http://www.xxluntan.com">新乡论坛</a></strong>使用的是DISCUZ这套建立在PHP技术上的论坛程序，&nbsp;所以对于PHP的环境搭建的熟练程度，一直都感觉自我良好！所以经常自告奋勇的替朋友安装调试PHP环境，也一向很少出现解决不了的问题。但是，今天，让我郁闷整整一天&mdash;&mdash;PHP、mysql、zend安装一切顺利，IIS调试也成功，最简单的phpmyadmin安装时却遇到了郁闷的问题，打开phpmyadmin首页提示&ldquo;<strong>无法载入 mysql 扩展，请检查 PHP 配置</strong>&rdquo;，更郁闷的是，在经过数十次（毫不夸张）的尝试后，问题依旧存在&hellip;&hellip;从大清早到现在，直到刚刚才得以解决，兴奋之余，考虑到解决的时候在网上看到N多人遇见这个问题，且网上的解决方法虽然能解决大部分人的这个问题，但还有极个别的无法解决（很不幸，我就是极个别的一个），所以，马不停蹄的过来分享一下解决的方法，希望以后有遇见这个问题的朋友不会再像我这样郁闷&hellip;&hellip;<br />&nbsp;&nbsp;&nbsp; 其实，问题的解决方法简单的让人不敢相信&hellip;&hellip;<br />&nbsp;&nbsp;&nbsp; 废话不多说，开始！<br />&nbsp;&nbsp;&nbsp; 先说下我安装的一些版本，以备大家对照（版本大同小异，问题解决方法基本一致）<br /><br />&nbsp;&nbsp; PHP：5.2.8&nbsp; 下载地址：<a href="http://www.skycn.com/soft/9122.html">http://www.skycn.com/soft/9122.html</a><br />&nbsp;&nbsp; mysql：5.1.31 下载地址：<a href="http://www.skycn.com/soft/6916.html">http://www.skycn.com/soft/6916.html</a>&nbsp;&nbsp; （我没有选择最新的，出于稳定性的考虑）<br />&nbsp;&nbsp; zend:v3.3.0a&nbsp; 下载地址：<a href="http://www.skycn.com/soft/20133.html">http://www.skycn.com/soft/20133.html</a><br />&nbsp;&nbsp; phpmyadmin：3.1.2 下载地址：忘了，自己搜吧<br /><br />&nbsp;</p><p>&nbsp;&nbsp; php、MySQL、zend、phpmyadmin安装方法不再累述，详情可以参考我原来整理过的一篇软文：<a target="_blank" href="http://hi.xxluntan.com/archives/7.html">IIS6.0+PHP+Mysql+Zend环境组建[图文]</a>，来看如果遇到无法载入MySQL扩展的错误时应该如何解决：<br /><br />&nbsp; （结合网上提供的方法逐一列出，请逐一对照检查）<br /><br />1、php.ini检查是否已放入c:\windows目录下（貌似废话，不放入PHP就不可能安装成功）<br />2、extension=php_mysql.dll、extension_dir 、register_globals=Off是否修改。修改方法如下：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extension=php_mysql.dll：去掉前边的注释&ldquo;;&rdquo;（我这里已经去掉过了）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extension_dir ：是否为&ldquo;extension_dir&nbsp;=&nbsp;'d:\php\ext'&rdquo;（一定要注意&ldquo;\&rdquo;的倾斜方向，写惯程序的很可能搞错，老汉就搞错了&hellip;&hellip;）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;register_globals=Off：修改为register_globals=On<br />3、检查php5ts.dll、libmysql.dll、libmcrypt.dll这三个文件是否复制入&ldquo;system32&rdquo;目录下<br />4、修改phpmyadmin的libraries下的config.default.php文件，除按照<a href="http://hi.xxluntan.com/archives/7.html">http://hi.xxluntan.com/archives/7.html</a>下的安装方法修改外，再增加修改如下：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 找到：$cfg['Servers'][$i]['controluser'] = '';，修改为：$cfg['Servers'][$i]['controluser'] = '您mysql的用户名，通常默认为root';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 找到：$cfg['Servers'][$i]['controlpass'] = '';，修改为：$cfg['Servers'][$i]['controlpass'] = '您mysql的访问密码';<br />5、检查是否添加系统变量，方法如下：<br />&nbsp;&nbsp;&nbsp; 桌面&gt;我的电脑&gt;右键属性&gt;高级&gt;环境变量&gt;系统变量&gt;新建<br />&nbsp;&nbsp;&nbsp; 名:phprc<br />&nbsp;&nbsp;&nbsp; 值:d:\php(你的PHP在什么目录就是什么)<br /><br />上边这几步我全都做好了，其实在发现这个问题前我就已经做好了，但还是出现了这个问题，而网上有N多页面说明解决办法，其实基本上都是以上几个方法，没有一个能解决我的问题，最后，我是按下边这个方法解决的，简单的有点可笑&hellip;&hellip;<br /><strong>6、检查你的php安装目录，如果这个目录有名字为&ldquo;php.ini&rdquo;的文件（很面熟吧，就是安装是放进windows根目录的PHP配置文件&hellip;&hellip;），把它删除或者改名&hellip;&hellip;让php.ini文件只存在于c:\windows</strong>。如果以上5个办法都没有解决你<strong>无法载入 mysql 扩展，请检查 PHP 配置</strong>的问题，那么，就试试这个，说不定有惊喜（老汉就被惊喜一下）<br /><br />按以上方法检查和修改后，记得要重启IIS,方便的话重启服务器，然后看看问题是否解决（相信一定解决了），如果没有解决，留言下来，我们一起讨论！<br />&nbsp;</p>]]></description><category>服务器技术</category><comments>http://hi.xxluntan.com/archives/34.html#comment</comments><wfw:comment>http://hi.xxluntan.com/</wfw:comment><wfw:commentRss>http://hi.xxluntan.com/feed.asp?cmt=34</wfw:commentRss><trackback:ping>http://hi.xxluntan.com/cmd.asp?act=tb&amp;id=34&amp;key=8680a109</trackback:ping></item></channel></rss>

