線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1725
推到 Plurk!
推到 Facebook!

用thread去連結本地端的accdb資料庫出問題

尚未結案
17kobe
初階會員


發表:86
回覆:73
積分:31
註冊:2007-07-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-13 01:42:45 IP:220.133.xxx.xxx 訂閱
  
[code delphi]
TADOConn1.Connected := False;
TADOConn1.CursorLocation := clUseServer;
TADOConn1.LoginPrompt := FALSE;
TADOConn1.Provider := 'Microsoft.ACE.OLEDB.12.0';
TADOConn1.ConnectionString := dm1.ADOConnection1.ConnectionString;

TADOQuery1 := TADOQuery.create(nil);
TADOQuery2 := TADOQuery.create(nil);
try
TADOConn1.Open; //此行出問題
.
.
.
finally
TADOQuery1.Close;
TADOQuery2.Close;
TADOConn1.close;
if Assigned(TADOQuery1) then FreeAndNil(TADOQuery1);
if Assigned(TADOQuery2) then FreeAndNil(TADOQuery2);
if Assigned(TADOConn1) then FreeAndNil(TADOConn1);
end;
[/code]
一次可能同時連結15個執行序,然後持續連結共100個。常常是在後面的時候open會失敗,請問是因為不能連結(開太多ADOConnecion)太多嗎,還是我寫法有問題呢?或者是有等待可以連結的機制。
編輯記錄
17kobe 重新編輯於 2008-11-13 01:45:25, 註解 無‧
17kobe 重新編輯於 2008-11-13 01:46:08, 註解 無‧
2007
中階會員


發表:54
回覆:90
積分:98
註冊:2008-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-13 08:33:51 IP:220.132.xxx.xxx 未訂閱

每一個 執行序 就獨立用一個 TADOConnection 元件 嗎??
如果是的話,改成共用同一個 TADOConnection 試看看!!!

===================引 用 17kobe 文 章===================

[code delphi]
TADOConn1.Connected := False;
TADOConn1.CursorLocation := clUseServer;
TADOConn1.LoginPrompt := FALSE;
TADOConn1.Provider := 'Microsoft.ACE.OLEDB.12.0';
TADOConn1.ConnectionString := dm1.ADOConnection1.ConnectionString;

TADOQuery1 := TADOQuery.create(nil);
TADOQuery2 := TADOQuery.create(nil);
try
TADOConn1.Open; //此行出問題
.
.
.
finally
TADOQuery1.Close;
TADOQuery2.Close;
TADOConn1.close;
if Assigned(TADOQuery1) then FreeAndNil(TADOQuery1);
if Assigned(TADOQuery2) then FreeAndNil(TADOQuery2);
if Assigned(TADOConn1) then FreeAndNil(TADOConn1);
end;
[/code]
一次可能同時連結15個執行序,然後持續連結共100個。常常是在後面的時候open會失敗,請問是因為不能連結(開太多ADOConnecion)太多嗎,還是我寫法有問題呢?或者是有等待可以連結的機制。
17kobe
初階會員


發表:86
回覆:73
積分:31
註冊:2007-07-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-13 13:43:50 IP:60.250.xxx.xxx 訂閱
之前改成共用一個ADOConnection會有List index out of bounds 
http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=94882

我的程式架構是
主程式控制一個同時開5個執行序thread1,總共須要把60多個開完.
thread1
thread1中包含3種非同步執行序thread2, thread3, thread4
這種thread,改成用動態建立,各自有其ADOConnection,造成連到後面50幾個時會出現ADOConn.Open;此行錯誤,不給我連了.

2007
中階會員


發表:54
回覆:90
積分:98
註冊:2008-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-14 09:53:33 IP:220.132.xxx.xxx 未訂閱
關於你說的:之前改成共用一個ADOConnection會有List index out of bounds 的問題!!! 
應該去找出問題所在,
也許~~也許~~ 是你多個 thread 同時對同一個 Table 做開啟、新增或刪除~~造成的吧!!!

在Thread中跑ADO Connection及Query
請問在多線程程式中如何將各個線程查詢出的資料在主線程中作運算
CoInitialize(nil);
.
.
.
.
.
CoUninitialize;

我認為~~認為~~認為~~ 我認為啦~~~
還是不要用太多的 TADOConnection 元件 (每一個 thread 都獨立一個 )。
至少 access 當資料庫,本來就不是一個很好的 資料庫,常會遇到 資料庫 損壞的問題,
加上你用太多 TADOConnection ,若程式處理不當(電腦當機、程式發生例外、......),
也許會造成資料庫的資料不一致,資料損壞,資料庫開不啟來之類的問題吧!!!

===================引 用 17kobe 文 章===================

之前改成共用一個ADOConnection會有List index out of bounds
http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=94882

我的程式架構是
主程式控制一個同時開5個執行序thread1,總共須要把60多個開完.
thread1
thread1中包含3種非同步執行序thread2, thread3, thread4
這種thread,改成用動態建立,各自有其ADOConnection,造成連到後面50幾個時會出現ADOConn.Open;此行錯誤,不給我連了.
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-08-21 16:21:27 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-05-03 7:49:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!