使用asp+中的若干问题及解决方案 (1)
综述
在这篇文章里 豆腐 简单扼要的讲了一下在asp+编程中我们可能要碰到的问题以及碰到这些问题的解决方法,相信大家 在
看完这篇文章以后,对于asp+的编程就会觉得是非常的
简单,我在这篇文章文章中主要讲了一些比较中级的应用,假如您对于asp+目前还是处于入门阶段,建议您去
1 如何使用 asp+ 获取提交的form元素
我们首先来利用一个很简单的例子来说明 一下 asp+ 给我们带来的 server-side control 的好处
首先我们写一个form 为了方便起见,我不在 描述 %26lt;html%26gt; 等和我们的文章没有直接关系的标签
代码:
--------------------------------------------------------------------------------
%26lt;SCRIPT language=%26quot;VB%26quot; runat=%26quot;server%26quot;%26gt;Sub test(Sender As Object, Args As
EventArgs)'Sender , Args这两个 参数是 click 事件的参数Response.Write (%26quot;您的名称是 : '%26quot; %26amp;
txtName.value %26amp; %26quot;' .”)Response.Write (%26quot;您填写的Email是: '%26quot; %26amp; txtEmail.value %26amp;%26quot;'.%26quot;)End
Sub%26lt;/SCRIPT%26gt;%26lt;form method=post%26gt;%26lt;table align = center%26gt;%26lt;tr%26gt;%26lt;td%26gt;您的名称:%26lt;INPUT
type=%26quot;text%26quot; id=%26quot;txtName%26quot; runat=%26quot;server%26quot;%26gt;%26lt;/td%26gt;%26lt;/tr%26gt;%26lt;tr%26gt;%26lt;td%26gt;您的Email 是%26lt;INPUT
type=%26quot;text%26quot; id=%26quot;txtEmail%26quot; runat=%26quot;server%26quot;%26gt;%26lt;/td%26gt;%26lt;/tr%26gt;%26lt;tr%26gt;%26lt;td%26gt;%26lt;INPUT type=%26quot;submit%26quot;
value=%26quot;提交%26quot; runat=%26quot;server%26quot;onserverclick=%26quot;test%26quot;%26gt;%26lt;/td%26gt;%26lt;/tr%26gt;%26lt;/table%26gt;%26lt;/form%26gt;
--------------------------------------------------------------------------------
这样我们写的程序 就如同 一个 vb 的 frm 一样(据说在 vb 7.0 中的确会增加这样的功能)
有的人也会说他们非常希望 和 以前的 asp 程序保持 连续性,没有关系,假如 您 不喜欢使用
txtName.Value 这样的语法的话,仍然可以使用 request.form(txtName),怎么样,够Cool 吧。
2。ASp+ 中处理 数据库
asp+ 引入了很多的 server-side 的数据库组件,就如同我们在 VB 的的数据库控件DBList,DBGrid 一样
假如在 VI 中使用过 RDS 组件的话,大家一定对MS 很早就想 推出的这个东东 有一个 大致的了解了,不过
asp+ 就是asp+ 不是asp,MS 确实有大动作在 asp 上做
代码:
--------------------------------------------------------------------------------
%26lt;%@ Page Language=%26quot;VB%26quot;%%26gt;%26lt;%@ Import Namespace=%26quot;System.Data%26quot; %%26gt;%26lt;%@ Import
Namespace=%26quot;System.Data.ADO%26quot; %%26gt;%26lt;script language=%26quot;VB%26quot; runat=%26quot;server%26quot;%26gt;Sub search_OnClick(Sender As
Object, E As EventArgs)'这底下的语句告诉我们,在ASp+ 中我们终于可以 放弃variant 这种效率低下的数据类
型了Dim connobj As ADOConnectionDim dtsCmdobj As ADODataSetCommandDim dtSobj As
DataSetDim str_sql As Stringdim conn_str As Stringstr_sql = %26quot;select * from
table_name%26quot;conn_str = %26quot;DBQ=%26quot; %26amp; Server.MapPath(%26quot;database.mdb%26quot;) %26amp;_%26quot;;Driver={Microsoft
Access Driver (*.mdb)};%26quot;connobj = New ADOConnection(conn_str)dtsCmdobj = New ADODataSetCommand
(str_sql, connobj)dtSobj = New DataSet()dtsCmdob.FillDataSet(dtsobj, %26quot;test%26quot;)
dtgrid.DataSource = dtsobj.Tables(%26quot;test%26quot;).DefaultViewdtgrid.DataBind()End
Sub%26lt;/script%26gt;%26lt;html%26gt;%26lt;body%26gt;%26lt;form action=%26quot;db.aspx%26quot; method=%26quot;post%26quot; runat=%26quot;server%26quot;%26gt;%26lt;asp:Button type=%26quot;submit%26quot;
id=%26quot;query%26quot; text=%26quot;查询%26quot; OnClick=%26quot;query_OnClick%26quot; runat=%26quot;server%26quot; /%26gt;%26lt;/form%26gt;%26lt;asp:DataGrid id=%26quot;dtgrid%26quot;
HeaderStyle-Font-Bold=%26quot;True%26quot; ToolTip=%26quot;data Grid provided with asp+%26quot; runat=%26quot;server%26quot;
maintainviewstate=%26quot;false%26quot; /%26gt;%26lt;/body%26gt;%26lt;/html%26gt;
--------------------------------------------------------------------------------
看到了吗??这不是VB 是什么???有的朋友可能在 VB 下就很不 习惯 VB 的 数据绑定,不错,Asp+也提供了 一个叫
做 DataSet 的集合(Object)
我们刚才也已经看到了,
我们可以不使用bDataBind() 方法,直接用 Response.write 写出来,Let's Look!
代码:
--------------------------------------------------------------------------------
%26lt;%@import namespace=%26quot;system.data.SQL%26quot;%%26gt;%26lt;SCRIPT LANGUAGE=%26quot;vb%26quot; RUNAT=%26quot;server%26quot;%26gt;Sub displaydata()
Dim dtReader AS SQLDataReaderDim sqlcmd AS SQLCommandDim sqlserver AS StringDim sql AS
Stringsqlserver = %26quot;server=my.sql.database;uid=userid;password=password;%26quot;SQL = %26quot;Select * from
table_name%26quot;sqlcmd = New SQLCommand(sql,sqlserver)sqlcmd.ActiveConnection.Open()
sqlcmd.execute(dtreader)Response.write(%26quot;再进行数据库open后,我们来显示这个Table 的某一个字段的数
值%26quot;)While dbRead.Read()response.write (dtreader.Item(%26quot;test_column%26quot;) %26amp; %26quot;%26lt;br%26gt;%26quot;)End While
End Sub%26lt;/SCRIPT%26gt;
--------------------------------------------------------------------------------
我们已经看到了 如何将数据库里的 数值从数据库中 读取出来,我们 再来看 一个例子,看看是如何
修改数据库的内容的
代码:
--------------------------------------------------------------------------------
%26lt;%@ Import Namespace=%26quot;System.Data%26quot; %%26gt;%26lt;%@ Import Namespace=%26quot;System.Data.SQL%26quot; %%26gt;%26lt;HTML%26gt;%26lt;BODY%26gt;
%26lt;script language=%26quot;VB%26quot; runat=%26quot;server%26quot;%26gt;Sub Page_Load(Src as Object, E as
EventArgs )‘这个事件在 页面载入的 时候 触发Dim myConnection as
SQLConnectionmyConnection = new SQLConnection(%26quot;SERVER=sqlserver; UID=sa; PWD=;
DATABASE=test%26quot;)Dim myCommand as SQLCommanddim sql as string
sql=%26quot;insert into test(testcol) values('1234')%26quot;'sql=%26quot;update test set
testcol='1234'%26quot;'sql=%26quot;delete from test%26quot;myCommand = new SQLCommand(%26quot;INSERT into test
(testCol) VALUES ('1234')%26quot;, myConnection)myConnection.Open()
myCommand.Execute()myConnection.Close()Response.Write(%26quot;更新数据成
功%26quot;)End Sub%26lt;/script%26gt;%26lt;/BODY%26gt;%26lt;/HTML%26gt;
--------------------------------------------------------------------------------
数据库搞完了,我们下面来看看 如何 进行一些 在 asp+ 无法实现的 功能
3.上传,发送Email 和 操作 socket
在前面的文章中,我已经举过了 上传和 操作socket 实现 域名查询的完整例子,在这里我们主要看
看用Asp 发送Email
代码:
--------------------------------------------------------------------------------
%26lt;% @Page Language=%26quot;C#%26quot; %%26gt;%26lt;% @Import Namespace=%26quot;System.Web.Util%26quot; %%26gt;%26lt;%MailMessage mailMsg = new
MailMessage();mailMsg.To = %26quot;roboo@21cn.com%26quot;;//信件的接收人mailMsg.From = %26quot;roboo@21cn.com%26quot;;//发
信人mailMsg.Subject = %26quot;这是个用 asp+ 发送的 测试信件%26quot;;mailMsg.BodyFormat = MailFormat.Text;//说明
信件的格式是 text 格式,我们当然可以设定 MailFormat.HtmlmailMsg.Body = %26quot;带有附件的%26quot;;
mailMsg.Attachments.Add(new MailAttachment(%26quot;c:\\test.bmp%26quot;));//这就是 附件SmtpMail.Send(mailMsg);//
发信Response.Write(%26quot;邮件发送成功%26quot;);%%26gt;
--------------------------------------------------------------------------------
4.在asp+中如何进行错误处理?
在asp 中 on error resume next 是我们唯一的处理方式,现在在asp+ 中又会是什么呢?
说来简单,只要我们在页面的前面添加这样的一句,问题就迎刃而解了
%26lt;%@page Errorpage = %26quot;/error.aspx%26quot;%%26gt;
当出现错误的时候,我们只要统一在 error.aspx 文件中处理即可
5 在asp+ 中处理文本文件,在asp 中我们用 fileSystemObject 很方便的就可以处理 文本文件,asp+ 在这个方面继续
发扬的更加方便
代码:
--------------------------------------------------------------------------------
%26lt;%@ import namespace=%26quot;system.io%26quot; %%26gt;%26lt;html%26gt;%26lt;head%26gt;%26lt;title%26gt;ASP+ 中 测试读取 文本文件
%26lt;/title%26gt;%26lt;/head%26gt;%26lt;body%26gt;%26lt;%Dim readfile As StreamReaderDim strIn As String
readfile = File.OpenText( %26quot;c:\sample.txt%26quot; )DostrIn = readfile.ReadLine()Response.Write(
strIn %26amp; %26quot;%26lt;br%26gt;%26quot; )Loop Until strIn = Nullreadfile.Close%%26gt;%26lt;/body%26gt;%26lt;/html%26gt;
--------------------------------------------------------------------------------
是不是很简单,下面再来看看 写文本文件
代码:
--------------------------------------------------------------------------------
%26lt;%@ import namespace=%26quot;system.io%26quot; %%26gt;%26lt;html%26gt;%26lt;head%26gt;%26lt;title%26gt;ASP+ 测试 写 文本文件%26lt;/title%26gt;
%26lt;/head%26gt;%26lt;body%26gt;%26lt;%Dim writeFile As StreamWriterwriteFile = File.CreateText
( %26quot;c:\sample.txt%26quot; )myWriter.WriteLine( %26quot;这是一个用asp+ 生成的文本文件%26quot; )myWriter.WriteLine( %26quot;豆
腐制作,都是精品%26quot; )myWriter.CloseResponse.Write( %26quot;test.txt 创建 并 写入 成功!%26quot; )%%26gt;
%26lt;/body%26gt;%26lt;/html%26gt;
--------------------------------------------------------------------------------
终于写完了,通过这篇文章 我们已经可以 根据 文章中 所涉及的 知识,材料和代码 已经可以开发
一个中等难度的 asp+ 站点了,当然 我这里 只是 一些简单的例子 和讲解,具体在 开发的 过程中
大家还是要靠自己 的努力的
假如你 错过了php,后来有因为 jsp 太难,就不要 放弃 asp+ 努力吧,朋友们
在这篇文章里 豆腐 简单扼要的讲了一下在asp+编程中我们可能要碰到的问题以及碰到这些问题的解决方法,相信大家 在
看完这篇文章以后,对于asp+的编程就会觉得是非常的
简单,我在这篇文章文章中主要讲了一些比较中级的应用,假如您对于asp+目前还是处于入门阶段,建议您去
1 如何使用 asp+ 获取提交的form元素
我们首先来利用一个很简单的例子来说明 一下 asp+ 给我们带来的 server-side control 的好处
首先我们写一个form 为了方便起见,我不在 描述 %26lt;html%26gt; 等和我们的文章没有直接关系的标签
代码:
--------------------------------------------------------------------------------
%26lt;SCRIPT language=%26quot;VB%26quot; runat=%26quot;server%26quot;%26gt;Sub test(Sender As Object, Args As
EventArgs)'Sender , Args这两个 参数是 click 事件的参数Response.Write (%26quot;您的名称是 : '%26quot; %26amp;
txtName.value %26amp; %26quot;' .”)Response.Write (%26quot;您填写的Email是: '%26quot; %26amp; txtEmail.value %26amp;%26quot;'.%26quot;)End
Sub%26lt;/SCRIPT%26gt;%26lt;form method=post%26gt;%26lt;table align = center%26gt;%26lt;tr%26gt;%26lt;td%26gt;您的名称:%26lt;INPUT
type=%26quot;text%26quot; id=%26quot;txtName%26quot; runat=%26quot;server%26quot;%26gt;%26lt;/td%26gt;%26lt;/tr%26gt;%26lt;tr%26gt;%26lt;td%26gt;您的Email 是%26lt;INPUT
type=%26quot;text%26quot; id=%26quot;txtEmail%26quot; runat=%26quot;server%26quot;%26gt;%26lt;/td%26gt;%26lt;/tr%26gt;%26lt;tr%26gt;%26lt;td%26gt;%26lt;INPUT type=%26quot;submit%26quot;
value=%26quot;提交%26quot; runat=%26quot;server%26quot;onserverclick=%26quot;test%26quot;%26gt;%26lt;/td%26gt;%26lt;/tr%26gt;%26lt;/table%26gt;%26lt;/form%26gt;
--------------------------------------------------------------------------------
这样我们写的程序 就如同 一个 vb 的 frm 一样(据说在 vb 7.0 中的确会增加这样的功能)
有的人也会说他们非常希望 和 以前的 asp 程序保持 连续性,没有关系,假如 您 不喜欢使用
txtName.Value 这样的语法的话,仍然可以使用 request.form(txtName),怎么样,够Cool 吧。
2。ASp+ 中处理 数据库
asp+ 引入了很多的 server-side 的数据库组件,就如同我们在 VB 的的数据库控件DBList,DBGrid 一样
假如在 VI 中使用过 RDS 组件的话,大家一定对MS 很早就想 推出的这个东东 有一个 大致的了解了,不过
asp+ 就是asp+ 不是asp,MS 确实有大动作在 asp 上做
代码:
--------------------------------------------------------------------------------
%26lt;%@ Page Language=%26quot;VB%26quot;%%26gt;%26lt;%@ Import Namespace=%26quot;System.Data%26quot; %%26gt;%26lt;%@ Import
Namespace=%26quot;System.Data.ADO%26quot; %%26gt;%26lt;script language=%26quot;VB%26quot; runat=%26quot;server%26quot;%26gt;Sub search_OnClick(Sender As
Object, E As EventArgs)'这底下的语句告诉我们,在ASp+ 中我们终于可以 放弃variant 这种效率低下的数据类
型了Dim connobj As ADOConnectionDim dtsCmdobj As ADODataSetCommandDim dtSobj As
DataSetDim str_sql As Stringdim conn_str As Stringstr_sql = %26quot;select * from
table_name%26quot;conn_str = %26quot;DBQ=%26quot; %26amp; Server.MapPath(%26quot;database.mdb%26quot;) %26amp;_%26quot;;Driver={Microsoft
Access Driver (*.mdb)};%26quot;connobj = New ADOConnection(conn_str)dtsCmdobj = New ADODataSetCommand
(str_sql, connobj)dtSobj = New DataSet()dtsCmdob.FillDataSet(dtsobj, %26quot;test%26quot;)
dtgrid.DataSource = dtsobj.Tables(%26quot;test%26quot;).DefaultViewdtgrid.DataBind()End
Sub%26lt;/script%26gt;%26lt;html%26gt;%26lt;body%26gt;%26lt;form action=%26quot;db.aspx%26quot; method=%26quot;post%26quot; runat=%26quot;server%26quot;%26gt;%26lt;asp:Button type=%26quot;submit%26quot;
id=%26quot;query%26quot; text=%26quot;查询%26quot; OnClick=%26quot;query_OnClick%26quot; runat=%26quot;server%26quot; /%26gt;%26lt;/form%26gt;%26lt;asp:DataGrid id=%26quot;dtgrid%26quot;
HeaderStyle-Font-Bold=%26quot;True%26quot; ToolTip=%26quot;data Grid provided with asp+%26quot; runat=%26quot;server%26quot;
maintainviewstate=%26quot;false%26quot; /%26gt;%26lt;/body%26gt;%26lt;/html%26gt;
--------------------------------------------------------------------------------
看到了吗??这不是VB 是什么???有的朋友可能在 VB 下就很不 习惯 VB 的 数据绑定,不错,Asp+也提供了 一个叫
做 DataSet 的集合(Object)
我们刚才也已经看到了,
我们可以不使用bDataBind() 方法,直接用 Response.write 写出来,Let's Look!
代码:
--------------------------------------------------------------------------------
%26lt;%@import namespace=%26quot;system.data.SQL%26quot;%%26gt;%26lt;SCRIPT LANGUAGE=%26quot;vb%26quot; RUNAT=%26quot;server%26quot;%26gt;Sub displaydata()
Dim dtReader AS SQLDataReaderDim sqlcmd AS SQLCommandDim sqlserver AS StringDim sql AS
Stringsqlserver = %26quot;server=my.sql.database;uid=userid;password=password;%26quot;SQL = %26quot;Select * from
table_name%26quot;sqlcmd = New SQLCommand(sql,sqlserver)sqlcmd.ActiveConnection.Open()
sqlcmd.execute(dtreader)Response.write(%26quot;再进行数据库open后,我们来显示这个Table 的某一个字段的数
值%26quot;)While dbRead.Read()response.write (dtreader.Item(%26quot;test_column%26quot;) %26amp; %26quot;%26lt;br%26gt;%26quot;)End While
End Sub%26lt;/SCRIPT%26gt;
--------------------------------------------------------------------------------
我们已经看到了 如何将数据库里的 数值从数据库中 读取出来,我们 再来看 一个例子,看看是如何
修改数据库的内容的
代码:
--------------------------------------------------------------------------------
%26lt;%@ Import Namespace=%26quot;System.Data%26quot; %%26gt;%26lt;%@ Import Namespace=%26quot;System.Data.SQL%26quot; %%26gt;%26lt;HTML%26gt;%26lt;BODY%26gt;
%26lt;script language=%26quot;VB%26quot; runat=%26quot;server%26quot;%26gt;Sub Page_Load(Src as Object, E as
EventArgs )‘这个事件在 页面载入的 时候 触发Dim myConnection as
SQLConnectionmyConnection = new SQLConnection(%26quot;SERVER=sqlserver; UID=sa; PWD=;
DATABASE=test%26quot;)Dim myCommand as SQLCommanddim sql as string
sql=%26quot;insert into test(testcol) values('1234')%26quot;'sql=%26quot;update test set
testcol='1234'%26quot;'sql=%26quot;delete from test%26quot;myCommand = new SQLCommand(%26quot;INSERT into test
(testCol) VALUES ('1234')%26quot;, myConnection)myConnection.Open()
myCommand.Execute()myConnection.Close()Response.Write(%26quot;更新数据成
功%26quot;)End Sub%26lt;/script%26gt;%26lt;/BODY%26gt;%26lt;/HTML%26gt;
--------------------------------------------------------------------------------
数据库搞完了,我们下面来看看 如何 进行一些 在 asp+ 无法实现的 功能
3.上传,发送Email 和 操作 socket
在前面的文章中,我已经举过了 上传和 操作socket 实现 域名查询的完整例子,在这里我们主要看
看用Asp 发送Email
代码:
--------------------------------------------------------------------------------
%26lt;% @Page Language=%26quot;C#%26quot; %%26gt;%26lt;% @Import Namespace=%26quot;System.Web.Util%26quot; %%26gt;%26lt;%MailMessage mailMsg = new
MailMessage();mailMsg.To = %26quot;roboo@21cn.com%26quot;;//信件的接收人mailMsg.From = %26quot;roboo@21cn.com%26quot;;//发
信人mailMsg.Subject = %26quot;这是个用 asp+ 发送的 测试信件%26quot;;mailMsg.BodyFormat = MailFormat.Text;//说明
信件的格式是 text 格式,我们当然可以设定 MailFormat.HtmlmailMsg.Body = %26quot;带有附件的%26quot;;
mailMsg.Attachments.Add(new MailAttachment(%26quot;c:\\test.bmp%26quot;));//这就是 附件SmtpMail.Send(mailMsg);//
发信Response.Write(%26quot;邮件发送成功%26quot;);%%26gt;
--------------------------------------------------------------------------------
4.在asp+中如何进行错误处理?
在asp 中 on error resume next 是我们唯一的处理方式,现在在asp+ 中又会是什么呢?
说来简单,只要我们在页面的前面添加这样的一句,问题就迎刃而解了
%26lt;%@page Errorpage = %26quot;/error.aspx%26quot;%%26gt;
当出现错误的时候,我们只要统一在 error.aspx 文件中处理即可
5 在asp+ 中处理文本文件,在asp 中我们用 fileSystemObject 很方便的就可以处理 文本文件,asp+ 在这个方面继续
发扬的更加方便
代码:
--------------------------------------------------------------------------------
%26lt;%@ import namespace=%26quot;system.io%26quot; %%26gt;%26lt;html%26gt;%26lt;head%26gt;%26lt;title%26gt;ASP+ 中 测试读取 文本文件
%26lt;/title%26gt;%26lt;/head%26gt;%26lt;body%26gt;%26lt;%Dim readfile As StreamReaderDim strIn As String
readfile = File.OpenText( %26quot;c:\sample.txt%26quot; )DostrIn = readfile.ReadLine()Response.Write(
strIn %26amp; %26quot;%26lt;br%26gt;%26quot; )Loop Until strIn = Nullreadfile.Close%%26gt;%26lt;/body%26gt;%26lt;/html%26gt;
--------------------------------------------------------------------------------
是不是很简单,下面再来看看 写文本文件
代码:
--------------------------------------------------------------------------------
%26lt;%@ import namespace=%26quot;system.io%26quot; %%26gt;%26lt;html%26gt;%26lt;head%26gt;%26lt;title%26gt;ASP+ 测试 写 文本文件%26lt;/title%26gt;
%26lt;/head%26gt;%26lt;body%26gt;%26lt;%Dim writeFile As StreamWriterwriteFile = File.CreateText
( %26quot;c:\sample.txt%26quot; )myWriter.WriteLine( %26quot;这是一个用asp+ 生成的文本文件%26quot; )myWriter.WriteLine( %26quot;豆
腐制作,都是精品%26quot; )myWriter.CloseResponse.Write( %26quot;test.txt 创建 并 写入 成功!%26quot; )%%26gt;
%26lt;/body%26gt;%26lt;/html%26gt;
--------------------------------------------------------------------------------
终于写完了,通过这篇文章 我们已经可以 根据 文章中 所涉及的 知识,材料和代码 已经可以开发
一个中等难度的 asp+ 站点了,当然 我这里 只是 一些简单的例子 和讲解,具体在 开发的 过程中
大家还是要靠自己 的努力的
假如你 错过了php,后来有因为 jsp 太难,就不要 放弃 asp+ 努力吧,朋友们





