一、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)