本人的语句:
  ADOQuery3.Close ;
  ADOQuery3.SQL.Clear;
  ADOQuery3.SQL.Text :='INSERT INTO TEST_FOR_XXX(SEQ,SER_TYPE,DHHM ,PASSWD,ADD_DEL) VALUES (GS_COUT,'''DG50''','''13906119780''','''666666''','''Y''')  ';
  ADOQuery3.ExecSQL ;
除了用三个" ' "号以及将 SQL语句分成几段,每段用4个'号分割外,还有什么好方法?急!
另外,ADOQuery3.ExecSQL 如何不让自动提交?等取到返回值后提交?象PB一样?

解决方案 »

  1.   

    1.你的sql有问题啊,应该只要两个单引号就可以了。
    ADOQuery3.SQL.Text :='INSERT INTO TEST_FOR_XXX(SEQ,SER_TYPE,DHHM ,PASSWD,ADD_DEL) VALUES (GS_COUT,''DG50'',''13906119780'',''666666'',''Y'')  '
    2.你自己开始事务。自己提交不就可以了
      

  2.   

    'INSERT INTO TEST_FOR_XXX(SEQ,SER_TYPE,DHHM ,PASSWD,ADD_DEL) VALUES (GS_COUT,''DG50'',''13906119780'',''666666'',''Y'')  '
    就可以了,你只需记住字符串里面个引号代表SQL中的一个引号就OK了
      

  3.   


    ado 开始一个事务的条件 : 
    1. adodataset 的 游标类型 cursortype 设成ctStatic,LockType 设成 ltBatchOptimistic
                           
    开始一个事务
    2.
    try
     Adoconnection1.beginTrans;
     adodataset.UpdateBatch();
     Adoconnection1.commitTrans;
    except
     Adoconnection1.rollbacktrans; 
    end;
      

  4.   

    ADOQuery3.Close ;
      ADOQuery3.SQL.Clear;
      ADOQuery3.SQL.Text :='INSERT INTO TEST_FOR_XXX(SEQ,SER_TYPE,DHHM ,PASSWD,ADD_DEL) VALUES (GS_COUT,para1,para2,para3,para4)  ';
    adoquery3.parambyname('para1').asstring:='''DG50''';
    adoquery3.parambyname('para2').asstring:='''13906119780''';
    adoquery3.parambyname('para3').asstring:='''666666''';
    adoquery3.parambyname('para4').asstring:='''Y''';
      ADOQuery3.ExecSQL ;