现在的位置: 首页 > 综合 > 正文

转:PB 默认 SQLCA 连接问题 处理

2013年12月04日 ⁄ 综合 ⁄ 共 2807字 ⁄ 字号 评论关闭

一、PB默认以sqlca连接数据库,所以,它不用定义transaction  sqlca。

二、其它连接一概需要事先定义transaction,例如声名transaction  sqlca_gen。

三、CONNECT USING sqlca;  这一句只能写一次。如果写两次连接语句,其实就会断开连接。所以,当你必须写两次连接的时候,请先用明码断开连接,即DISCONNECT USING sqlca;

四、所有SQL语句执行,以及commit命令,rollback命令,如果在代码中不特别说明,就一定是用sqlca连接的数据库。

五、用其它连接执行数据库读写,必须明码声明,例如:

   1:  select count(*) into :cnt from sys_users using sqlca_gen;
   2:   
   3:      update sys_users set pass='' where user_id='1188' using sqlca_gen;
   4:   
   5:      commit using sqlca_gen;

=================================华丽分割================================================

自己测试

   1:  mysqlca = create transaction;// 实例化事务对象
   2:  //从INI文件读取连接数据库的参数
   3:  mySQLCA.DBMS       = ProfileString(ba_profile, "DataBase", "SQLCA.DBMS", "")
   4:  mySQLCA.ServerName = ProfileString(ba_profile, "DataBase", "SQLCA.ServerName", "")
   5:  mySQLCA.Database   = ProfileString(ba_profile, "DataBase", "SQLCA.DataBase", "")
   6:  mySQLCA.LogPass    = ProfileString(ba_profile, "DataBase", "SQLCA.LogPass", "")
   7:  mySQLCA.LogId      = ProfileString(ba_profile, "DataBase", "SQLCA.LogId", "")
   8:  mySQLCA.AutoCommit = False
   9:  mySQLCA.DBParm     = ""
  10:  connect using mysqlca;//连接数据库
  11:   if mysqlca.sqlcode < 0 then    
  12:       MessageBox("提示信息","连接balance数据库失败!联系信息部 0512-68601128-407"+"~t~r~r"+sqlca.sqlerrtext,exclamation!)
  13:       halt
  14:   end if
  15:   
  16:   
  17:  string ls_serialno
  18:   
  19:  SELECT bal_invoice_pay.serialno 
  20:  INTO  :ls_serialno
  21:  FROM bal_invoice_pay
  22:  WHERE bal_invoice_pay.suppl_no=:ls_suppl_no AND bal_invoice_pay.payinfo_no=:ls_payinfo_no using mysqlca;  //注意
  23:   
  24:   messagebox("xxxx", ls_serialno)
  25:   
  26:  dw_1.settransobject(mysqlca)//确定使用数据库联接句柄
  27:  dw_2.settransobject(mysqlca)//确定使用数据库联接句柄
  28:  dw_3.settransobject(mysqlca)//确定使用数据库联接句柄
  29:  dw_4.settransobject(mysqlca)//确定使用数据库联接句柄
  30:   
  31:  dw_1.retrieve(ls_suppl_no,ls_payinfo_no)
  32:   dw_2.retrieve(ls_serialno)
  33:   dw_3.retrieve(ls_serialno)
  34:  dw_4.retrieve(ls_suppl_no,ls_payinfo_no)

抱歉!评论已关闭.