在現代信息時代中,數據庫的應用已不是什么新鮮事物。各行各業的系統,都需要一個數據庫來進行數據的存儲和管理。而在.NET平臺上,C#語言與Oracle數據庫的聯系常常會被提起。那么下面就來詳細地探討一下C#如何操作Oracle數據庫的一些重要方法吧。
在C#中,Oracle.DataAccess.Client是我們直接連接Oracle數據庫的一個方法,它可以通過一個連接字符串迅速連接到Oracle數據庫。常見的連接字符串包括了服務名、用戶名、密碼等等,例如:
string connectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=" + "(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))" + "(CONNECT_DATA=(SERVICE_NAME=orcl)));" + "User Id=scott;Password=tiger;"; OracleConnection connection = new OracleConnection(connectionString); try { connection.Open(); Console.WriteLine("Connection is established!"); } catch (Exception ex) { Console.WriteLine("Exception message:"+ex.Message); } finally { connection.Close(); Console.WriteLine("Connection is closed!"); }
在此我們創建了一個連接字符串,直接使用OracleConnection類的實例進行連接。在try...catch中,我們嘗試去連接Oracle數據庫,并且輸出連接狀態信息。在finally中,我們關掉連接并且輸出相應信息。
當然,我們連接到Oracle數據庫后,肯定不能滿足于只是連接,我們還需要進行相關操作。比如說,我們需要獲取一個表中的所有行數據:
string connectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=" + "(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))" + "(CONNECT_DATA=(SERVICE_NAME=orcl)));" + "User Id=scott;Password=tiger;"; OracleConnection connection = new OracleConnection(connectionString); try { connection.Open(); string sql = "SELECT * FROM emp"; OracleCommand command = new OracleCommand(sql, connection); OracleDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine(reader.GetInt32(0) + "," + reader.GetString(1)); } reader.Close(); } catch (Exception ex) { Console.WriteLine("Exception message:" + ex.Message); } finally { connection.Close(); }
在此我們首先創建了一個SQL語句,并且通過OracleCommand實例發送SQL查詢語句。然后我們通過OracleDataReader實例遍歷讀取到的每一條數據,并且輸出相關信息。當然,在讀取完成后,我們必須關閉相關資源以便釋放內存。
除此之外,我們還可以使用插入更新操作來更新Oracle數據庫。例如如下所示:
string connectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=" + "(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))" + "(CONNECT_DATA=(SERVICE_NAME=orcl)));" + "User Id=scott;Password=tiger;"; OracleConnection connection = new OracleConnection(connectionString); try { connection.Open(); string sql = "INSERT INTO emp (empno, ename) VALUES (7839, 'KING')"; OracleCommand command = new OracleCommand(sql, connection); int rowsAffected = command.ExecuteNonQuery(); Console.WriteLine(rowsAffected + " rows have been updated!"); } catch (Exception ex) { Console.WriteLine("Exception message:" + ex.Message); } finally { connection.Close(); }
在此我們創建了一個插入語句,并且通過OracleCommand實例完成數據的插入。之后我們輸出了操作的結果以及被影響的行數。
在實際中,操作數據庫還有很多細節等待我們去學習和提高。例如如何進行事務、如何防止SQL注入等等問題,都需要我們不斷的學習和實踐。