📄 22-3.cfm.htm
字号:
<P ALIGN="JUSTIFY"><LI>adCMDUnknown。不指定字符串的内容。(这是缺省值。)</LI></P></UL>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 在你能够在一个ASP网页中使用这些常量之前,你必须先包含一个名为ADOVBS.inc的特殊文件。文件ADOVBS.inc中包含ADO使用的所有VBSript常量。上例中第一行的INCLUDE语句包含了文件ADOVBS.inc。</P>
<P ALIGN="JUSTIFY">在你安装ASP时,这个文件应该已经被自动安装了。一般来说,它会被安装在c:\Program Files\Common Files\System\ADO目录下。但是,你也许不得不使用WINDOWS NT任务栏中的Find命令,找到这个文件的确切位置,找到它之后,把这个文件拷贝到你的Active Sever Pages目录中。</P>
<P ALIGN="JUSTIFY"> </P>
<B><P ALIGN="JUSTIFY">注意</P>
</B><P ALIGN="JUSTIFY">如果你使用Jscript,而不是VBSript,ADO常量的包含文件应该是ADOJAVAS.inc。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">打开一个连接后,你需要调用Execute方法多少次,你就可以调用多少次。</P>
<P ALIGN="JUSTIFY">例如,下面的脚本向表Mytable中输入了32个字符串:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><!--#INCLUDE VIRTUAL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>ADOVBS.inc</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>--></P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyConn=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>ADODB.Connection</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">MyConn.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>FILEDSN=d:\Program Files\</P>
<P ALIGN="JUSTIFY"> Common Files\ODBC\Data Sources\MyData.dsn</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3> </P>
<P ALIGN="JUSTIFY">FOR i=1 TO 32</P>
<P ALIGN="JUSTIFY">MySQL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>INSERT Mytable (Mycolumn) VALUES (</FONT><FONT FACE="Playbill,Courier New" SIZE=3>‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3> This is entry </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>&i&</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3> </FONT><FONT FACE="Playbill,Courier New" SIZE=3>’</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">MyConn.Execute MySQL, HowMany,adCMDText</P>
<P ALIGN="JUSTIFY">NEXT</P>
<P ALIGN="JUSTIFY">MyConn.Close</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">这段脚本使用了一个FOR</FONT><FONT FACE="Playbill,Courier New" SIZE=3>……</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>NEXT循环,向表Mytable中插入了32条记录。变量MySQL包含Execute方法使用的SQL命令字符串。注意书写SQL字符串时如何使用单引号和双引号。单引号用来标记SQL语句内部的引用。双引号用来指定VBSript内字符串的开始和结束。</P>
<P ALIGN="JUSTIFY">用Execute方法几乎可以这些所有的SQL命令。例如,下面的脚本创建了一个表,然后添加数据,清除数据,最后删除这个表:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><!--#INCLUDE VIRTUAL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>ADOVBS.inc</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>--></P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyConn=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>ADODB.Connection</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">MyConn.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>FILEDSN=d:\Program Files\</P>
<P ALIGN="JUSTIFY"> Common Files\ODBC\Data Sources\MyData.dsn</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3> </P>
</FONT><FONT FACE="Playbill,Courier New" SIZE=3><P ALIGN="JUSTIFY">‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3> create a new table</P>
<P ALIGN="JUSTIFY">MySQL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>CREATE TABLE newtable (mycolumn VARCHAR(255))</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">MyConn.Execute MySQL</P>
</FONT><FONT FACE="Playbill,Courier New" SIZE=3><P ALIGN="JUSTIFY">‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3> populate the table</P>
<P ALIGN="JUSTIFY">MySQL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>INSERT newtable (mycolumn) VALUES(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>hello</FONT><FONT FACE="Playbill,Courier New" SIZE=3>’</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">MyConn.Execute MySQL</P>
</FONT><FONT FACE="Playbill,Courier New" SIZE=3><P ALIGN="JUSTIFY">‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>truncate the table</P>
<P ALIGN="JUSTIFY">MySQL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>TRUNCATE TABLE newtable</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">MyConn.Execute MySQL</P>
</FONT><FONT FACE="Playbill,Courier New" SIZE=3><P ALIGN="JUSTIFY">‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>drop the table</P>
<P ALIGN="JUSTIFY">MySQL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>DROP TABLE newtable</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">MyConn.Execute MySQL</P>
<P ALIGN="JUSTIFY">Myconn.Close</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">创建事务处理</P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">当一组语句构成一个事务处理时,如果一个语句没有执行成功,则所有的语句都不成功。如果你需要更新多个表中的数据,你不希望对一个表的操作失败,而对其它表的操作成功了。这时所有事务处理是有用的。</P>
<P ALIGN="JUSTIFY">例如,假设某个时间有人在你的站点上买了东西,有关的交易信息存储在两个表中 。一个表用来保存买者的信用卡信息,另一个表包含了要买的商品的信息。</P>
<P ALIGN="JUSTIFY">现在,假如有一个人正试图从你的站点上买东西。他的信用卡号码已经输入了第一个表中。但是,就在这时,发生了意外情况,一道闪电击中了你的服务器,使第二个表没有被更新。在这种情况下,当然最后是两个表都没有被更新过。你当然不想收这个人的钱去买他不想买的东西。使用事务处理,你可以防止第二个表没有被更新而第一个表被更新的情况出现:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyConn=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>ADODB.Connection</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">MyConn.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>FILEDSN=d:\Program Files\</P>
<P ALIGN="JUSTIFY"> Common Files\ODBC\Data Sources\MyData.dsn</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3> </P>
<P ALIGN="JUSTIFY">MyConn.BeginTrans</P>
<P ALIGN="JUSTIFY">MyConn.Execute </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>INSERT CreditCard (CCNum) VALUES (</FONT><FONT FACE="Playbill,Courier New" SIZE=3>‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>5555-55-444-44-4444</FONT><FONT FACE="Playbill,Courier New" SIZE=3>’</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">MyConn.Execute </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>INSERT Shipping (Address) VALUES(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>Paris,France</FONT><FONT FACE="Playbill,Courier New" SIZE=3>’</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">MyConn.CommitTrans</P>
<P ALIGN="JUSTIFY">MyConn.Close</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY">在这个例子中,用BeginTrans方法和CommitTrans方法来标记事务处理的开始和结束。在BeginTrans方法被调用之后,CommitTRans方法被调用之前,不管出现什么错误,两个表都不会被更新。</P>
<P ALIGN="JUSTIFY">你也可以恢复一个事务处理的操作(操作作废)。要做到这一点,应使用RollBackTrans方法。考虑如下的脚本:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyConn=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>ADODB.Connection</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">MyConn.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>FILEDSN=d:\Program Files\</P>
<P ALIGN="JUSTIFY"> Common Files\ODBC\Data Sources\MyData.dsn</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3> </P>
<P ALIGN="JUSTIFY">MyConn.BeginTrans</P>
<P ALIGN="JUSTIFY">MyConn.Execute </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>INSERT CreditCard (CCNum) VALUES (</FONT><FONT FACE="Playbill,Courier New" SIZE=3>‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>5555-55-444-44-4444</FONT><FONT FACE="Playbill,Courier New" SIZE=3>’</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">MyConn.Execute </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>INSERT Shipping (Address) VALUES(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>‘</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>Paris,France</FONT><FONT FACE="Playbill,Courier New" SIZE=3>’</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">IF WEEKDAYNAME(WEEKDAY(DATE))=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>Sunday</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3> THEN</P>
<P ALIGN="JUSTIFY"> MyConn.RollBackTrans</P>
<P ALIGN="JUSTIFY">ELSE</P>
<P ALIGN="JUSTIFY"> MyConn.CommitTrans</P>
<P ALIGN="JUSTIFY">END IF</P>
<P ALIGN="JUSTIFY">MyConn.Close</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">在这个例子中,使用了RollBackTrans方法,如果是星期天,就取消事务处理所做的操作。在星期天两个表都不能被更新。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN" SIZE=5><P ALIGN="JUSTIFY">总结</P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> 这一章介绍了Activex数据对象。第一节是ADO的概述。在第二节,你学会了如何配置服务器以使用ADO。最后,向你介绍了最重要的ADO对象之一:连接对象。</P></FONT></BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -