结束交易的正确方法是什么? :
Query.SQL.Add('START TRANSACTION;');
-----
-----
Query.SQL.Add('COMMIT;');
Query.ExecSQL;
或
Query.SQL.Add('START TRANSACTION;');
-----
-----
Query.ExecSQL;
Query.SQL.Add('COMMIT;');
编辑: 或者这样:
.......
.......
try
if not Database1.InTransaction then
Database1.StartTransaction;
Query.ExecSQL;
Database1.Commit;
except on E : Exception do begin
Database1.Rollback;
答案 0 :(得分:7)
通常你必须在try下控制事务,除了防止插入或更新语句出错..所以我建议 在tConnection上使用start transaction而不是在try除外的tquery上使用
mEdit = (Button)findViewById(R.id.Prof_edit_btn);
mEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
mBatal.setVisibility(View.VISIBLE);
mBatal.setClickable(true);
mSave.setVisibility(View.VISIBLE);
mSave.setClickable(true);
mEdit.setVisibility(View.INVISIBLE);
}
});
mSave = (Button)findViewById(R.id.Prof_save_btn);
mSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mEdit.setVisibility(View.VISIBLE);
mBatal.setVisibility(View.INVISIBLE);
mSave.setVisibility(View.INVISIBLE);
Toast.makeText(getApplicationContext(), "Data Anda berhasil disimpan", Toast.LENGTH_SHORT).show();
}
});
注意: 将RollbackTrans放在异常管理的第一行非常重要,因为showmessage或其他任何其他代码都可以为其他用户锁定数据库表的一部分