關於DBX的Transaction問題 |
答題得分者是:2007
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
最近在用DBX + MySQL
使用交易時,發生還沒有commit,值就直接寫到資料庫裡的現象(交易行為無視,不論是sql還是用元件函式轉換都一樣) 以下是我的程式區段 [code cpp] void __fastcall TForm1::Button1Click(TObject *Sender) { String OldTime; String NewTime; TTransactionDesc TD; TD.TransactionID = 1; TD.IsolationLevel = xilREADCOMMITTED; SQLConnection1->StartTransaction(TD); OldTime = Now().FormatString("hhmmss"); for(int i=1; i!=5001; i ) { //ClientDataSet SQLTable Sa->Insert(); Sa->FieldByName("aa")->AsString = i; Sa->FieldByName("bb")->AsString =i; Sa->Post(); //ClientDataSet SQLQuery //Sa->Close(); //Sa->SQL->Text = "insert into aa values(" AnsiString(i) ", " AnsiString(i) ")"; //Sa->ExecSQL(); } Sa->ApplyUpdates(-1); SQLConnection1->Rollback(TD); //這樣寫入的5000筆資料應該不會寫進去才是 NewTime = Now().FormatString("hhmmss") - OldTime; Form1->Caption = NewTime; } [/code] 不知道是哪邊錯位,還請各位大大指教,謝謝! |
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
大大!!
我用 (C Builder 2007 ) DBX(TSimpleDataSet) MS-SQL OK 啊,Rollback 後,沒有值寫進入去!! 是不是 你的MySQL版本不支援 Transaction, 或是 有設定 可以 設定 關掉或開啟 Transaction 的功能?? 嘻嘻~~我不熟,亂猜的。 [code cpp] String OldTime; String NewTime; OldTime = Now().FormatString("hhmmss"); for(int i=1; i!=5001; i ) { SimpleDataSet1->Append(); SimpleDataSet1->FieldByName("a")->AsString = FormatFloat("0000",i); SimpleDataSet1->FieldByName("b")->AsString = "Test#" FormatFloat("0000",i); SimpleDataSet1->Post(); } TTransactionDesc TD; TD.TransactionID = 1; TD.IsolationLevel = xilREADCOMMITTED; SQLConnection1->StartTransaction(TD); try { SimpleDataSet1->DataSet->Close(); SimpleDataSet1->ApplyUpdates(0); SQLConnection1->Rollback(TD); SimpleDataSet1->Close(); SimpleDataSet1->DataSet->Close(); NewTime = Now().FormatString("hhmmss") - OldTime; Form1->Caption = NewTime; } catch (...) {} [/code] ===================引 用 GrandRURU 文 章=================== 最近在用DBX MySQL 使用交易時,發生還沒有commit,值就直接寫到資料庫裡的現象(交易行為無視,不論是sql還是用元件函式轉換都一樣) 不知道是哪邊錯位,還請各位大大指教,謝謝!
編輯記錄
2007 重新編輯於 2008-11-11 13:22:00, 註解 無‧
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
2007大,謝謝你嚕
還真被你說中了… = =||| mysql的table還有分支援跟不支援transaction…… 我剛好被mysql分配到不支援的那邊…難怪不吃 MYSQL...還真是不太好用…… ===================引 用 2007 文 章=================== 大大!! 我用 (C Builder 2007 ) DBX(TSimpleDataSet) MS-SQL OK 啊,Rollback 後,沒有值寫進入去!! 是不是 你的MySQL版本不支援 Transaction, 或是 有設定 可以 設定 關掉或開啟 Transaction 的功能?? 嘻嘻~~我不熟,亂猜的。 43...... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |