最近参与了一个基于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服务器端时间
}