我用delphi7和sql server 2005寫一個簡單的網路資料庫程式,主視窗有一個定時器,客戶機每1分鐘掃描一次服務器上sql server2005資料庫,看看有沒有自己新資料,程式啟動程式后長時間放置,第一次用戶登錄時,點用戶名下拉欄,里面是空的,并報資料庫連接錯誤,第二次再點,用戶名就有了,能正常登錄,能進行進一步的資料操作。請教大家這是什么情況?
uj5u.com熱心網友回復:
你是不是在定時器中寫的資料庫用名及連接?在FormCreate的時候就初始化連接比較好。uj5u.com熱心網友回復:
你的程式中直接連接資料庫,還是DataSnap方式?uj5u.com熱心網友回復:
我在建立表單時進行資料庫連接,在定時器內只是用adoquery掃描資料庫。uj5u.com熱心網友回復:
1、使用ADO套接字連接資料庫;2、確定連接上資料庫后,才能搜索重繪資料;
uj5u.com熱心網友回復:
已經使用adoconnection連接資料庫,用戶登錄后能進行查詢、增加、洗掉資料庫操作,只是長時間開著程式,不去動它,再次使用程式進行用戶登錄時第一次點用戶名下拉欄時會報連接錯誤并且沒有用戶名串列,第二次點下拉攔時用戶名就有了,能進行正常登錄和資料庫操作。uj5u.com熱心網友回復:
這種情況,似乎是與連接資料庫斷了,常理連接資料庫后,不會自動斷線。sql server 資料庫服務啟動以后沒有例外的話是一直在運行的。MYSQL有小時的限制,到了就自動斷開,需要重新連接。需連接都設成的永不過期。此外,由于網路不穩定可能導致資料庫連接斷開。你的資料庫與程式在同一機器上,就不存在此問題。如果訪問局域網資料庫,此類問題,大有可能。
還有MSSQL服務器程式的問題,也可能出現自動斷線問題。需要重新安裝MSSQL Server程式。
建議:
1、找一下是否設定上剖,或是資料庫(sql server 2005)自身出現問題,長時間未資料讀取,就斷線;重裝一下SQL Server程式;
2、建議使用Timer控制元件設定一個心跳包,幾分鐘,就連接一下資料, 這樣,可以保持長時間連接。 定時檢查一下,發現斷開了,就重新連接一下!
uj5u.com熱心網友回復:
程式中設了一個定時器,每一分鐘用adoquery去查詢一次資料庫,看看是否有自己的資料,并且根據這個adoquery中的select陳述句是否正常運行,若出錯,就用adoconnecttion自動重連資料庫。從程式運行情況看,自動重連資料庫是運行正常的,沒有出現定時器中adoquery運行報錯。uj5u.com熱心網友回復:
樓上的做法,就是通常心跳包的做法,問題解決了。uj5u.com熱心網友回復:
我已經采用上面的辦法但問題還是存在!請教各位有什么辦法?uj5u.com熱心網友回復:
ADOCONNECTION的KEEPCONNECTION設定為TRUEADOQUERY的PREPARED設定為TRUE
再試試
如果沒有ADOCONNECTION的話,加一個去試試
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/91714.html
標籤:數據庫相關
上一篇:RSAD的呼叫
