易截截图软件、单文件、免安装、纯绿色、仅160KB

ASP中使用SQLServer的事务控制及批执行Sql语句

<%
   SQL1 = "update table1 set a=b where id=1"
   Conn.ExeCute SQL1
    SQL2 = "update table2 set a=b where id=2"
   Conn.ExeCute SQL2
   SQL3 = "update table3 set a=b where id=3"
   Conn.ExeCute SQL3
%>
    事实上,这是一种效率很低下的写法,为了提高SQL的执行效率,我们可以把多个SQL语句用分号拼接在一起,然后一次性交给Conn来执行。如下:
<%   
    SQL1 = "update table1 set a=b where id=1"
    SQL2 = "update table2 set a=b where id=2"
    SQL3 = "update table3 set a=b where id=3"
    SQL = SQL1 & ";" & SQL2 & ";" & SQL3
    Conn.ExeCute SQL
%>
    但是,以上2种写法都会面临一个问题,就是当我们需要保证3条SQL语句都必须完整执行,当某一条执行错误时,其他2条也跟着回滚时,我们就需要用到SQLServer的事务控制了,不少的文章建议使用以下方法:
<%
dim Conn=Server.CreateObject("ADODB.Connection")  
'开始事务  
Conn.BeginTrans    
'执行SQL,若成功则提交事,否则回滚事务  
Conn.Execute(sql语句)  
'提交事务  
Conn.CommitTrans  
'回滚事务  
Conn.RollbackTrans
%>
    在很多时候,这并不能达到保证SQL语句完整执行的目的,高效的做法应该是利用SQLServer本身的事务控制功能,如下:
<%
Sub ExeSql(byval SqlStr)
Dim TrSql
TrSql = "SET XACT_ABORT ON;BEGIN TRANSACTION;"
   TrSql = TrSql & SqlStr
   TrSql = TrSql & ";COMMIT TRANSACTION;SET XACT_ABORT OFF"
Conn.ExeCute(TrSql)
End Sub
SQL1 = "update table1 set a=b where id=1"
SQL2 = "update table2 set a=b where id=2"
SQL3 = "update table3 set a=b where id=3"
SQL = SQL1 & ";" & SQL2 & ";" & SQL3
ExeSql SQL
%>


相关文档:

关于oracle导入sqlserver存在的唯一索引问题

我在把oracle数据导入sqlserver中时,发现在oracle中字段定义为唯一索引时,不同记录的此字段如果为空不被认为是重复的,但在sqlserver中如果此字段为唯一索引字段,不允许有2个以上的空值。郁闷。所以只好将sqlserver中的唯一索引字段手工修改为几个非空的值,但这样程序肯定要进行修改了。需要在程序中为此字段设置不重复 ......

Sqlserver 取汉字的第一个字母,方便模糊查询

 create function comm_getpy
(
    @str nvarchar(4000)
)
returns nvarchar(4000)
as
begin
declare @word nchar(1),@PY nvarchar(4000)
set @PY=''
while len(@str)>0
begin
    set @word=left(@str,1)
    --如果非汉字字符,返回原字符
& ......

java 调用通用存储过程(Sqlserver)


package com.wfy.system.dao;   
  
import java.sql.CallableStatement;   
import java.sql.Connection;   
import java.sql.ResultSet;   
import java.sql.SQLException;   
import java.sql.Types;    ......

连接oracle,sqlserver中数据库的示例代码

一 在Oracle中连接数据库
public class Test1 {
 public static void main(String[] args) {
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   Connection conn = DriverManager.getConnection(
       &nbs ......

sqlserver链接服务器使用方法

EXEC sp_addlinkedsrvlogin @rmtsrvname = 'serverontest', @useself = 'false', @locallogin = 'sa', @rmtuser = 'sa', @rmtpassword = 'passwordofsa'
添加登录方式
以上两个语句中,@server为服务器的别名,@datasrc为要链接的目标数据库的连接串,@rmtsrvname为别名,@locallogin为本地登录的用户名,@rmtuser和@rmtpa ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号