代码改变世界

关于客户端与数据库服务器端的时间同步问题

  Akin's BLOG  阅读(854)  评论(0编辑  收藏  举报

这是一个做C/S的管理软件开发时经常被忽略的问题,客户端的时间与服务器的时间如果有偏差,数据统计、报表等等肯定会有“意外”的情况发生。

2011年2月12日,我需要实现:从数据库服务器获取到时间,根据这个时间修改当前客户端电脑时间。

以前用Sql的函数getdate(),是比较容易的。

我们是基于dotnet4.0、EntityFramework开发软件,所以希望用ESQL的方式获取数据库服务器的时间,但昨天折腾了半天,还没搞定。

如果有哪位同学已经解决了这个问题,希望能指点一下!

2011年2月13日,暂时解决,之所以说是暂时,是因为并没有用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();
object tt= comm.ExecuteScalar();
DateTime sqlDT
= Convert.ToDateTime(tt);
SetLocalTime(sqlDT);
//设置本机时间
复制代码
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示