這是乙個做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,而是用客戶端跳轉時,位...