關於客戶端與資料庫伺服器端的時間同步問題

2021-05-24 06:48:14 字數 1429 閱讀 8469

這是乙個做c/s的管理軟體開發時經常被忽略的問題,客戶端的時間與伺服器的時間如果有偏差,資料統計、報表等等肯定會有「意外」的情況發生。

意圖很簡單:從資料庫伺服器獲取到時間,根據這個時間修改當前客戶端電腦時間。

用sql的函式getdate(),是比較容易的。

我們是基於dotnet4.0、entityframework開發軟體,所以希望用esql的方式獲取資料庫伺服器的時間,但昨天折騰了半天,還沒搞定。

如果有哪位同學已經解決了這個問題,希望能指點一下!

暫時解決,之所以說是暫時,是因為並沒有用esql的方式,而是用t-sql的方式。

以下是我的過程:

system.data.entityclient.entityconnection   這個是實體概念模型與資料來源的連線,繼承自dbconnection

在這個連線下createcommand(),就需要寫esql語句,我的語句是"select value currentdatetime()",卻是語法錯誤。翻遍了手冊和網路查詢,沒有任何有用的結果。

但在這個連線物件下有乙個屬性storeconnection,返回的是sql方式的連線,在這個下面createcommand(),可以寫t-sql語句,我的語句是"select getdate()",執行成功。

以上是程式**例子:

//

與資料庫伺服器的時間進行同步

system.data.entityclient.entityconnection conn

=(system.data.entityclient.entityconnection)blemployee.mydata.connection

;idbconnection conn0

=conn.storeconnection;

idbcommand comm

=conn0.createcommand();

//comm.commandtext = "select value currentdatetime()";

comm.commandtext ="

select getdate()";

comm.commandtype

=commandtype.text;

if(comm.connection.state

!=connectionstate.open)

comm.connection.open();

objecttt=

comm.executescalar();

datetime sqldt

=convert.todatetime(tt);

setlocaltime(sqldt);

//設定本機時間

客戶端與伺服器端通訊

關係圖 傳送 邏輯管理器 處理邏輯傳送指令 指令解析管理器 根據協議xml解析指令成二進位制資料 把二進位制資料傳給伺服器 接收 伺服器傳送二進位制資料到客戶端 指令解析管理器 根據協議xml解析二進位制資料 根據解析資料對映到邏輯類來處理 2 1 3 20 2,2 21 1,1,2 指令名和指令名...

客戶端與伺服器端的區別

一般來說,客戶端就是我們使用的電腦 包括我們使用的瀏覽器ie,firefox 伺服器端就是存放網頁與資料庫資料的伺服器 電腦上裝的魔獸程式就是客戶端程式,你連線的伺服器 九城的伺服器 就是是伺服器端程式 我們通常所說的動態 設計一般都是b s結構的,b是browser的縮寫,就是客戶端程式。s是se...

客戶端跳轉與伺服器端跳轉

客戶端跳轉時用httpservletresopse物件的sendredirect函式實現,伺服器端跳轉是使用requestdispather物件的forward方法實現的。這兩者之間的區別主要體現在三個方面 1.使用伺服器端跳轉時,客戶瀏覽器的位址列並不會顯示目標位址的url,而是用客戶端跳轉時,位...