最近參與了一個基于Oracle10g數(shù)據(jù)庫的C/S項目,抽空整理了一些技術相關的資料,發(fā)上來供大家一起參考學習。
項目中用到這樣一個功能:客戶端實時獲取Oracle數(shù)據(jù)庫服務器端的系統(tǒng)時間。
該功能的實現(xiàn),主要是通過從客戶端向Oracle服務器端執(zhí)行"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服務器端時間
}