CLIENTDATASET1.CLOSE; 
CommandText :='begin transaction'#13#10'UPDATE   表1   SET   字段1=1  '#13#10'   UPDATE   表2   SET   字段2=1 '#13#10'if @@error=0 '#13#10'commit transaction'#13#10'else'#13#10'rollback transaction'#13#10;
CLIENTDATASET1.Execute; 

解决方案 »

  1.   

    僵哥,这个方法能在ORACLE MYSQL SYSBASE数据库中用吗?还有哪果我的字段是二进制要保存图片,这时这个SQL语句怎样写
      

  2.   

    我只是稍稍熟悉点MSSQL。二进制图片也可以这样子写,只要其中一个使用参数代替,然后往参数填充图片就可以了。
      

  3.   

    不用参数行吗,就直接用SQL语句。
      

  4.   

    #13#10 
    ======
    换行符
    不用参数行吗,就直接用SQL语句。
    ===========================
    可以,把你的数据转换成长长的如0x2343..十六进制串吧。
      

  5.   

    建议看看MS的一些MSSQL实例。当中的图片字段都是这样子处理的。印象中,在SQL2000安装选项当中选择开发包相关的东西,里面就带有一些实例所使用的SQL导入脚本。
    insert into [tablename] ([fieldlist...,]image/*图片字段*/) values([valuelist...,],0x424D36E0...)
      

  6.   

    CLIENTDATASET1.CLOSE; 
    CommandText :='begin transaction'#13#10'UPDATE   表1   SET   字段1=1  '#13#10'   UPDATE   表2   SET   字段2=1 '#13#10'if @@error=0 '#13#10'commit transaction'#13#10'else'#13#10'rollback transaction'#13#10;
    CLIENTDATASET1.Execute; 
    支持这位大侠
      

  7.   

    把图片数据按字节转换成十六进制
    function MemoryToHexString(const MemoryStream:TMemoryStream):String;
    const
      HexString:array[0..15] of Char = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
    var
      HexStream:TMemoryStream;
      P:PByte;
      I: int64;
    begin
      Result := '0x00';
      if MemoryStream=Nil then
        Exit;
      HexStream:=TMemoryStream.Create;
      try
        HexStream.Write('0x',2);
        if MemoryStream.Size=0 then
          Exit;
        MemoryStream.Position :=0;
        I := 0;
        p := MemoryStream.Memory;
        repeat
          HexStream.Write(HexString[p^ div 16],1);
          HexStream.Write(HexString[P^ mod 16],1);
          Inc(P);
          I :=  I+1;
        until I>=MemoryStream.Size;
        SetString(Result,PChar(HexStream.Memory),HexStream.Size);//未测试
      finally
        HexStream.Free;
      end;
    end;function FileToHexString(const FileName:String):String;var
      memStream:TMemoryStream;begin
      Result := '0x00';
      memStream:=TMemoryStream.Create;
      try
        memStream.LoadFromFile(FileName);
        if memStream.Size<=0 then
          Exit;
        result := MemoryToHexString(memStream);
      finally
        memStream.Free;
      end;
    end;
      

  8.   

    这样不行呀。if @@error=0只对最后一次执行的判断呀。