客户端实时获取Oracle数据库服务器端的系统时间

时间:2021-08-06 04:35:22

最近参与了一个基于Oracle10g数据库的C/S项目,抽空整理了一些技术相关的资料,发上来供大家一起参考学习。
项目中用到这样一个功能:客户端实时获取Oracle数据库服务器端的系统时间。
该功能的实现,主要是通过从客户端向Oracle服务器端执行"SELECT SYSDATE FROM DUAL"查询,从而返回Oracle的当前时间。

代码示例如下:
/// <summary>
/// 获取Oracle服务器端时间
/// </summary>
/// <param name="oraconnstr">Oracle连接字段</param>
/// <returns>Oracle的当前时间</returns>
public DateTime GetServerDate(string oraconnstr)
{
    string sqlstr = "SELECT SYSDATE FROM DUAL";// 查询Oracle的当前时间
    using (OracleConnection cn = new OracleConnection(oraconnstr))
    {
        cn.Open();
        try
        {
            using (OracleCommand cm = new OracleCommand(sqlstr, cn))
            {
                using (OracleDataReader dr = cm.ExecuteReader())
                {
                    if (dr.Read())
                    {
                        return (DateTime)dr["SYSDATE"];
                    }
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message,"查询Oracle的当前时间",MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

    return DateTime.MinValue;
}

/// <summary>
/// 测试获取Oracle服务器端时间(1s一次)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tmrGetDateTime_Tick(object sender, EventArgs e)
{
    string oraconnstr = "Data Source=ORACL;User ID=TEST;Password=TEST;Unicode=True";// Oracle连接字段
    labDateTime.Text = "当前服务器时间:" + GetServerDate(oraconnstr).ToString();// 获取Oracle服务器端时间
}