• 一个操作读写已存在excel 文件的例子



    set xlapp = server.createobject("excel .application")
    strsource=filepath & "test.xls"'打开一个已经存在的test.xls文件,filepath为物理绝对路径
    xlapp.workbooks.open(strsource)
    set xlbook = xlapp.activeworkbook '打开book
    set xlsheet = xlbook.worksheets(1) '打开其中的一个sheet
    xlsheet.cells(1,1).value="test" '通过设置cell(i,j)里面的i,j来访问sheet里面任意一个cell
    xlbook.save '保存该excel 文件
    xlbook.saveas filepath & "test2.xls" '另存一个文件

    set xlsheet=nothing '一定要关闭,否则以后会一直存在一个无法释放的excel 进程
    set xlbook=nothing
    xlapp.quit
    asp运行端的一些设置
    1excel 文件所在的路径目录,要让iuser_即asp运行的用户有读写权限,否则
    会报错。
    2服务器端还必须要设置com组件的操作权限。在命令行键入“dcomcnfg”,
    进入com组件配置界面,选择microsoft excel 后点击属性按钮,将三个单选
    项一律选择自定义,编辑中将everyone加入所有权限。保存完毕后重新启动
    服务器。


    如何使用事务处理、存储过程和视图?
    ⑴.使用存储过程
    ①.定义好存储过程
    create procedure [output_1]
    @sid int output
    as
    set @sid=2
    create procedure [return_1]
    (@user_name varchar(40),@password varchar(20))
    as
    if exists(select id from user_info where user_name=@user_name and password =@password )
    return 1
    else
    return 0
    create procedure [user_info_1]
    (@user_name varchar(40),@password varchar(20))
    as
    select id from user_info where user_name=@user_name and password =@password
    create procedure [user_info_2]
    (@user_name varchar(40),@password varchar(20))
    as
    set xact_abort on
    begin transaction
    delete from user_info where user_name=@user_name and password =@password
    commit transaction
    set xact_abort off
    create procedure [user_info_3] as
    select * from user_info
    ②.在asp中调用
    use_proc.asp
    <!-- #include virtual="/adovbs.inc" -->
    <%
    set conn=server.createobject("adodb.connection")
    conn.open "course_dsn","course_user","course_password "
    '使用recordset调用带两个输入参数和返回纪录集的存储过程
    'create procedure [user_info_1]
    '(@user_name varchar(40),@password varchar(20))
    'as
    'select id from user_info where user_name=@user_name and password =@password
    response.write "普通的调用方法:<br>"
    set rs=server.createobject("adodb.recordset")
    sql="user_info_1 '"&request.querystring("user_name")&"','"&request.querystring("password ")&"'"
    rs.open sql,conn,1,1
    response.write rs("id")&"<br>"
    rs.close
    '使用recordset调用无输入参数,返回纪录集的存储过程,可以使用recordcount等属性
    'create procedure [user_info_3] as
    'select * from user_info
    response.write "<br>返回纪录集,可以使用recordcount等属性:"
    sql="exec user_info_3"
    rs.open sql,conn,1,1
    for i=1 to rs.recordcount
    response.write "<br>"&rs("user_name")
    rs.movenext
    next
    rs.close
    set rs=nothing
    '使用command调用带输出参数的存储过程
    'create procedure [output_1]
    '@sid int output
    'as
    'set @sid=2
    response.write "<br><br>调用带输出参数的存储过程:<br>"
    set cmd=server.createobject("adodb.command")
    cmd.activeconnection=conn
    cmd.commandtext = "output_1"
    cmd.parameters.append cmd.createparameter("@sid",adinteger,adparamoutput)
    cmd("@sid")=10
    cmd.execute()
    bbb=cmd("@sid")
    response.write bbb&"<br>"
    set cmd=nothing
    '使用command调用带两个输入参数和返回值的存储过程
    'create procedure [return_1]
    '(@user_name varchar(40))
    'as
    'if exists(select id from user_info where user_name=@user_name)
    'return 1
    'else
    'return 0
    response.write "<br>调用带两个输入参数和返回值的存储过程:<br>"
    set cmd=server.createobject("adodb.command")
    cmd.activeconnection=conn
    cmd.commandtype = adcmdstoredproc
    cmd.commandtext = "return_1"
    cmd.parameters.append cmd.createparameter("@return_value",adinteger,adparamreturnvalue)
    cmd.parameters.append cmd.createparameter("@user_name",advarchar,adparaminput,40)
    cmd.parameters.append cmd.createparameter("@password ",advarchar,adparaminput,20)
    cmd("@user_name")="tuth"
    cmd("@password ")="yyuyu"
    cmd.execute()
    rrr=cmd("@return_value")
    response.write rrr
    set cmd=nothing
    conn.close
    set conn=nothing
    %>
    效果:
    访问http://10.1.43.238/course/use_proc.asp?user_name=ahyi&password =ttt时,出现如下
    普通的调用方法:
    12
    返回纪录集,可以使用recordcount等属性:
    ahyi
    tet
    tuth
    调用带输出参数的存储过程:
    2
    调用带两个输入参数和返回值的存储过程:
    1
    注意:若存储过程无参数,则调用的sql语句综合 直接为存储过程名,一个参数为“存储过程名 参数”,若是多个参数,则“存储过程名 参数1,参数2,……,参数n”;如果在sql语句综合 中加入exec,则在返回的记录集中可以使用recordcount等属性;如果想获得存储过程的返回值或输出参数,可以使用command对象。
    ⑵.使用事务处理
    ①.asp内嵌的事务支持
    例子:
    use_transaction_1.asp
    <%
    'asp中使用事务
    set conn=server.createobject("adodb.connection")
    conn.open "course_dsn","course_user","course_password "
    conn.begintrans '开始事务
    sql="delete from user_info"
    set rs=server.createobject("adodb.recordset")
    rs.open sql,conn,3,3
    if conn.errors.count>0 then '有错误发生
    conn.rollbacktrans '回滚
    set rs=nothing
    conn.close
    set conn=nothing
    response.write "交易失败,回滚至修改前的状态!"
    response.end
    else
    conn.committrans '提交事务
    set rs=nothing
    conn.close
    set conn=nothing
    response.write "交易成功!"
    response.end
    end if
    %>
    ②.其他数据库 级的事务
    i.创建存储过程
    create procedure [user_info_2]
    (@user_name varchar(40),@password varchar(20))
    as
    set xact_abort on
    begin transaction
    delete from user_info where user_name=@user_name and password =@password
    commit transaction
    set xact_abort off
    ii.在asp中调用
    use_transaction_2.asp
    <%
    set conn=server.createobject("adodb.connection")
    conn.open "course_dsn","course_user","course_password "
    sql="user_info_2 '"&request.querystring("user_name")&"','"&request.querystring("password ")&"'"
    set rs=server.createobject("adodb.recordset")
    rs.open sql,conn,1,1
    set rs=nothing
    conn.close
    set conn=nothing
    %>
    讨论:两种方式的优劣?
    ⑶.使用视图
    在其他数据库 中定义好视图之后,在asp中如同使用一个表一样来使用视图

  • 相关阅读:
    Spring--自定义注解
    IntelliJ IDEA实用插件
    Zero date value prohibited解决方法
    如何保证幂等性
    Map遍历的几种方式
    Static关键字
    索引失效 -- 使用Between范围查询时
    接口的不同写法在Swagger上的不同
    js与jquery获取input输入框中的值
    一个简单的 aiax请求例子
  • 原文地址:https://www.cnblogs.com/ince/p/9156687.html
Copyright © 2020-2023  润新知