JSON

EasyASP 使用教程 [EasyASP v3(5)

字号+ 作者:H5之家 来源:H5之家 2017-08-04 11:02 我要评论( )

除了可以接收表单提交的序列值之外,也可以手动代入数组值用于批量操作时的参数,比如:Dim resultEasp.Var(id) = Array(12,23,45,34,67,89,90)下面的两种方法都是正确的,第二种方法效率更高:方法一,直接写SQL语

除了可以接收表单提交的序列值之外,也可以手动代入数组值用于批量操作时的参数,比如: Dim result Easp.Var("id") = Array(12,23,45,34,67,89,90) '下面的两种方法都是正确的,第二种方法效率更高: '方法一,直接写SQL语句 result = Easp.Db.ExecBatch("delete from product where id = {id}") '方法二,用批量删除方法,会自动优化SQL语句,效率更高 result = Easp.Db.DelBatch("product", "id = {id}") 上面的代码会删除 product 表中所有 id 在数组中的值。EasyASP 中的批量新增、删除、更新方法都会自动优化SQL语句,效率会有非常高的提升,在批量操作时建议使用这些方法。

存储过程操作

EasyASP 调用存储过程的方式也是比较简单的,下面四种方式都是可以的: Set proc = Easp.Db.Query("call 存储过程名 {参数1} [,{参数2}] [,{@输出参数}] [,{@@输入输出参数}]") Set proc = Easp.Db.Query("exec 存储过程名 {参数1} [,{参数2}] [,{@输出参数}] [,{@@输入输出参数}]") Set proc = Easp.Db.Exec("call 存储过程名 {参数1} [,{参数2}] [,{@输出参数}] [,{@@输入输出参数}]") Set proc = Easp.Db.Exec("exec 存储过程名 {参数1} [,{参数2}] [,{@输出参数}] [,{@@输入输出参数}]") 如你所见,参数中的“输入参数”用 {参数} 的形式,“输出参数”用 {@参数} 的形式,“既是输入参数又是输出参数”的用 {@@参数} 表示。参数的赋值,当然还是用的是超级变量。这几个方法会在执行存储过程后返回一个字典对象,这个字典对象固定包含以下4个键值:

  • rows - 受影响的行数

  • return - 返回值

  • out - 输出参数(字典对象),可用("out")("@参数名")调用

  • rs - 记录集对象(如果不返回记录集则该项值为Null)

  • 下面用一个完整的例子看一下使用方法: Dim proc, rs Easp.Var("uid") = Easp.NewID() Easp.Var("uname") = "coldstone" Easp.Var("dname") = "冷石" Easp.Var("upass") = Easp("md5")("123456") Set proc = Easp.Db.Query("exec sp_new_user {uid}, {uname}, {dname}, {upass}, {@usercount}") '假设存储过程 sp_new_user 成功会返回值1,失败返回0,并且选取本条新增的记录和一个输出参数 @usercount Easp.Println "返回值::" & proc("return") Easp.Println "总人数::" & proc("out")("@usercount") '如果返回记录集不为空 If Not IsNull(proc("rs")) Then Set rs = proc("rs") Easp.Println "新增用户ID为:" & rs("uid") Easp.Db.Close(rs) End If Set proc = Nothing 如果要返回的是多个记录集,也可以用下面的方法获取下一个记录集对象: Set rs1 = Easp.Db.NextRS(rs)

    事务处理

    先帖一段百科中的解释:

    数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。

    简单的说,就是很多句SQL在执行同一个业务逻辑时,可能其中某句会出错导致只执行了其中的一部分,这样会引发数据的不一致问题。事务处理的功能就是先预执行这些语句,在所有语句都没有错误的情况下再统一执行,如果出错,则取消之前的全部SQL操作。EasyASP 简单的封装了 ADO 的事务处理,视数据库的支持程度,事务也可以嵌套处理。下面是简单的事务处理代码: Dim result Easp.Db.Begin '开始事务 result = Easp.Db.Query("insert into table1 values ({f1}, {f2})") If Not result Then Easp.Db.RollBack '回滚事务 Else result = Easp.Db.Query("update table2 set fa1 = {fa1} where fa2 = {fa2}") If Not result Then Easp.Db.RollBack '回滚事务 Else Easp.Db.Commit '提交事务 End If End If 这样,这两个SQL语句要么同时执行,要么都不执行,不会出现一个执行而另一个没执行的情况了。

    多数据库操作

    如果您的系统使用了多个数据库,可以用下面的方法添加其它数据库连接: Easp.Db.SetConnection "connName", "MSSQL", "database2", "sa:password@192.168.0.2" 其中的 connName 是自定义的连接对象名称,在操作此数据库的数据前,要用下面的方法获取到该连接的 Connection 对象后再使用: '取得连接对象 Set conn = Easp.Db.GetConnection("connName") '读取记录集 Set rs = Easp.Db.Execute(conn, "Select * From table_name where id = 1") '添加记录 Call Easp.Db.Insert(conn, "table_name", "id:{easp.newid}, field1:{field1}, field2:GetDate()") '修改记录 Call Easp.Db.Update(conn, "table_name", "field1 = {field1}, field2 = {field2}", "id = {id}") '删除记录 Call Easp.Db.Delete(conn, "table_name", "id = {id}") '批量执行SQL(注:Select 语句不能用于批量操作) Call Easp.Db.ExecuteBatch(conn, sql) '批量新增记录 Call Easp.Db.InsertBatch(conn, table, field:value[,field:value...]) '批量更新记录 Call Easp.Db.UpdateBatch(conn, table, field=value[,field=value...], where) '批量删除记录 Call Easp.Db.DeleteBatch(conn, table, where)

    其它类型数据库操作

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • FineReport帮助文档

      FineReport帮助文档

      2017-08-04 10:02

    • JAVA中使用JSON进行数据传递示例

      JAVA中使用JSON进行数据传递示例

      2017-08-03 18:00

    • Gson和Fastjson的使用

      Gson和Fastjson的使用

      2017-08-03 10:02

    • 【转】JMeter学习(三十五)使用jmeter来发送json

      【转】JMeter学习(三十五)使用jmeter来发送json

      2017-08-01 16:02

    网友点评
    c