寫在前面:
常用數據庫:
SQLserver:https://www.cnblogs.com/mexihq/p/11636785.html
Oracle:https://www.cnblogs.com/mexihq/p/11700741.html
MySQL:https://www.cnblogs.com/mexihq/p/12463423.html
Access:https://www.cnblogs.com/mexihq/p/12466970.html
類似於上篇有關SQLserver的C#封裝,小編對Oracle數據庫進行了相應的封裝,方便后期開發使用,主要包括Oracle數據庫的連接、增、刪、改、查,如有什么問題還請各位大佬指教。后續也將對其他幾個常用的數據庫進行相應的整理。話不多說,直接開始碼代碼。
引用:
由於微軟在.Net框架4.0中已經決定撤銷使用System.Data.OracleClient,造成在VS中無法連接Oracle數據庫,但它還依舊存在於.Net架構中,我們可以通過自己引用。具體方法如下:
(1)在需要引用的程序集引用文件夾上右擊,選擇添加引用
(2)選擇瀏覽選項
(3)找到目錄 C:\Windows\Microsoft.NET\Framework\v2.0.50727
(4)找到 System.Data.OracleClient.dll 文件
(5)點擊確定。OK,引用完成
using System.Data; //DataSet引用集 using System.Data.OracleClient; //oracle引用
先聲明一個SqlConnection
private OracleConnection oracle_con;//聲明一個OracleConnection方便使用
Oracle打開:
/// <summary>
/// Oracle open
/// </summary>
/// <param name="link">link statement</param>
/// <returns>Success:success; Fail:reason</returns>
public string Oracle_Open(string link)
{
try
{
oracle_con = new OracleConnection(link);
oracle_con.Open();
return "success";
}
catch (Exception ex)
{
return ex.Message;
}
}
Oracle關閉:
/// <summary>
/// Oracle close
/// </summary>
/// <returns>Success:success Fail:reason</returns>
public string Oracle_Close()
{
try
{
if (oracle_con == null)
{
return "No database connection";
}
if (oracle_con.State == ConnectionState.Open)
{
oracle_con.Close();
oracle_con.Dispose();
}
else
{
if (oracle_con.State == ConnectionState.Closed)
{
return "success";
}
if (oracle_con.State == ConnectionState.Broken)
{
return "ConnectionState:Broken";
}
}
return "success";
}
catch (Exception ex)
{
return ex.Message;
}
}
Oracle的增刪改:
/// <summary>
/// Oracle insert,delete,update
/// </summary>
/// <param name="sql">insert,delete,update statement</param>
/// <returns>Success:success + Number of affected rows; Fail:reason</returns>
public string Oracle_Insdelupd(string sql)
{
try
{
int num = 0;
if (oracle_con == null)
{
return "Please open the database connection first";
}
if (oracle_con.State == ConnectionState.Open)
{
OracleCommand oracleCommand = new OracleCommand(sql, oracle_con);
num = oracleCommand.ExecuteNonQuery();
}
else
{
if (oracle_con.State == ConnectionState.Closed)
{
return "Database connection closed";
}
if (oracle_con.State == ConnectionState.Broken)
{
return "Database connection is destroyed";
}
}
return "success" + num;
}
catch (Exception ex)
{
return ex.Message.ToString();
}
}
Oracle的查:
/// <summary>
/// Oracle select
/// </summary>
/// <param name="sql">select statement</param>
/// <param name="record">Success:success; Fail:reason</param>
/// <returns>select result</returns>
public DataSet Oracle_Select(string sql, out string record)
{
try
{
DataSet dataSet = new DataSet();
if (oracle_con != null)
{
if (oracle_con.State == ConnectionState.Open)
{
OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(sql, oracle_con);
oracleDataAdapter.Fill(dataSet, "sample");
oracleDataAdapter.Dispose();
record = "OK";
return dataSet;
}
if (oracle_con.State == ConnectionState.Closed)
{
record = "Database connection closed";
}
else if (oracle_con.State == ConnectionState.Broken)
{
record = "Database connection is destroyed";
}
}
else
{
record = "Please open the database connection first";
}
record = "error";
return dataSet;
}
catch (Exception ex)
{
DataSet dataSet = new DataSet();
record = ex.Message.ToString();
return dataSet;
}
}
小編發現以上這種封裝方式還是很麻煩,每次對Oracle進行增刪改查的時候還得先打開數據庫,最后還要關閉,實際運用起來比較麻煩。因此對上面兩個增刪改查的方法進行了重載,在每次進行操作時都先打開數據庫,然后關閉數據庫。
/// <summary>
/// Oracle insert,delete,update
/// </summary>
/// <param name="sql">insert,delete,update statement</param>
/// <param name="link">link statement</param>
/// <returns>Success:success + Number of affected rows; Fail:reason</returns>
public string Oracle_Insdelupd(string sql, string link)
{
try
{
int num = 0;
using (OracleConnection oracleConnection = new OracleConnection(link))
{
DataSet dataSet = new DataSet();
oracleConnection.Open();
OracleCommand oracleCommand = new OracleCommand(sql, oracleConnection);
num = oracleCommand.ExecuteNonQuery();
oracleConnection.Close();
return "success" + num;
}
}
catch (Exception ex)
{
return ex.Message.ToString();
}
}
/// <summary>
/// Oracle select
/// </summary>
/// <param name="sql">select statement</param>
/// <param name="link">link statement</param>
/// <param name="record">Success:success; Fail:reason</param>
/// <returns>select result</returns>
public DataSet Oracle_Select(string sql, string link, out string record)
{
try
{
using (OracleConnection oracleConnection = new OracleConnection(link))
{
DataSet dataSet = new DataSet();
oracleConnection.Open();
OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(sql, oracleConnection);
oracleDataAdapter.Fill(dataSet, "sample");
oracleDataAdapter.Dispose();
oracleConnection.Close();
record = "success";
return dataSet;
}
}
catch (Exception ex)
{
DataSet dataSet = new DataSet();
record = ex.Message.ToString();
return dataSet;
}
}