.NET/C#/Oracle資料庫操作類
using System; using System.Data; using System.Collections.Generic; using System.Configuration; using System.Data.OracleClient; using System.Text; using System.IO; /// <summary> /// Oracle資料庫操作類 /// </summary> internal static class OracleHelper { //資料庫連線字串 private readonly static string connstr = ConfigurationManager.ConnectionStrings["ConnectionStrings"].ConnectionString; /// <summary> /// 執行資料庫查詢操作,返回受影響的行數 /// </summary> /// <param name="cmdText">Oracle儲存過程名稱或PL/SQL命令</param> /// <param name="commandParameters">命令引數集合</param> /// <returns>當前查詢操作影響的資料行數</returns> internal static int ExecuteNonQuery(string cmdText, params OracleParameter[] commandParameters) { OracleCommand command = new OracleCommand(); OracleConnection connection = new OracleConnection(connstr); int result = 0; try { PrepareCommand(command, connection, null,CommandType.Text, cmdText, commandParameters); result = command.ExecuteNonQuery(); command.Parameters.Clear(); } catch { throw; } finally { command.Dispose(); connection.Close(); connection.Dispose(); } return result; } /// <summary> /// 執行資料庫事務查詢操作,返回受影響的行數 /// </summary> /// <param name="transaction">資料庫事務物件</param> /// <param name="cmdType">Command型別</param> /// <param name="cmdText">Oracle儲存過程名稱或PL/SQL命令</param> /// <param name="commandParameters">命令引數集合</param> /// <returns>當前事務查詢操作影響的資料行數</returns> internal static int ExecuteNonQuery(OracleTransaction transaction, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { OracleCommand command = new OracleCommand(); OracleConnection connection = transaction.Connection; int result = 0; try { PrepareCommand(command, connection, transaction, cmdType, cmdText, commandParameters); result = command.ExecuteNonQuery(); command.Parameters.Clear(); } catch { throw; } finally { transaction.Dispose(); command.Dispose(); connection.Close(); connection.Dispose(); } return result; } /// <summary> /// 執行資料庫查詢操作,返回受影響的行數 /// </summary> /// <param name="connection">Oracle資料庫連線物件</param> /// <param name="cmdType">Command型別</param> /// <param name="cmdText">Oracle儲存過程名稱或PL/SQL命令</param> /// <param name="commandParameters">命令引數集合</param> /// <returns>當前查詢操作影響的資料行數</returns> internal static int ExecuteNonQuery(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { if (connection == null) throw new ArgumentNullException("當前資料庫連線不存在"); OracleCommand command = new OracleCommand(); int result = 0; try { PrepareCommand(command, connection, null, cmdType, cmdText, commandParameters); result = command.ExecuteNonQuery(); command.Parameters.Clear(); } catch { throw; } finally { command.Dispose(); connection.Close(); connection.Dispose(); } return result; } /// <summary> /// 執行資料庫查詢操作,返回OracleDataReader型別的記憶體結果集 /// </summary> /// <param name="cmdText">Oracle儲存過程名稱或PL/SQL命令</param> /// <param name="commandParameters">命令引數集合</param> /// <returns>當前查詢操作返回的OracleDataReader型別的記憶體結果集</returns> internal static OracleDataReader ExecuteReader(string cmdText, params OracleParameter[] commandParameters) { OracleCommand command = new OracleCommand(); OracleConnection connection = new OracleConnection(connstr); OracleDataReader reader = null; try { PrepareCommand(command, connection, null,CommandType.Text, cmdText, commandParameters); reader = command.ExecuteReader(CommandBehavior.CloseConnection); command.Parameters.Clear(); return reader; } catch { command.Dispose(); connection.Close(); throw; } } /// <summary> /// 執行資料庫查詢操作,返回DataSet型別的結果集 /// </summary> /// <param name="cmdText">Oracle儲存過程名稱或PL/SQL命令</param> /// <param name="commandParameters">命令引數集合</param> /// <returns>當前查詢操作返回的DataSet型別的結果集</returns> internal static DataSet ExecuteDataSet(string cmdText, params OracleParameter[] commandParameters) { OracleCommand command = new OracleCommand(); OracleConnection connection = new OracleConnection(connstr); DataSet dataset = null; try { PrepareCommand(command, connection, null,CommandType.Text, cmdText, commandParameters); OracleDataAdapter adapter = new OracleDataAdapter(); adapter.SelectCommand = command; dataset = new DataSet(); adapter.Fill(dataset); command.Parameters.Clear(); } catch { throw; } finally { command.Dispose(); connection.Close(); connection.Dispose(); } return dataset; } /// <summary> /// 執行資料庫查詢操作,返回DataTable型別的結果集 /// </summary> /// <param name="cmdText">Oracle儲存過程名稱或PL/SQL命令</param> /// <param name="commandParameters">命令引數集合</param> /// <returns>當前查詢操作返回的DataTable型別的結果集</returns> internal static DataTable ExecuteDataTable(string cmdText, params OracleParameter[] commandParameters) { OracleCommand command = new OracleCommand(); OracleConnection connection = new OracleConnection(connstr); DataTable table = null; try { PrepareCommand(command, connection, null,CommandType.Text, cmdText, commandParameters); OracleDataAdapter adapter = new OracleDataAdapter(); adapter.SelectCommand = command; table = new DataTable(); adapter.Fill(table); command.Parameters.Clear(); } catch { throw; } finally { command.Dispose(); connection.Close(); connection.Dispose(); } return table; } /// <summary> /// 執行資料庫查詢操作,返回結果集中位於第一行第一列的Object型別的值 /// </summary> /// <param name="cmdText">Oracle儲存過程名稱或PL/SQL命令</param> /// <param name="commandParameters">命令引數集合</param> /// <returns>當前查詢操作返回的結果集中位於第一行第一列的Object型別的值</returns> internal static object ExecuteScalar(string cmdText, params OracleParameter[] commandParameters) { OracleCommand command = new OracleCommand(); OracleConnection connection = new OracleConnection(connstr); object result = null; try { PrepareCommand(command, connection, null,CommandType.Text, cmdText, commandParameters); result = command.ExecuteScalar(); command.Parameters.Clear(); } catch { throw; } finally { command.Dispose(); connection.Close(); connection.Dispose(); } return result; } /// <summary> /// 執行資料庫事務查詢操作,返回結果集中位於第一行第一列的Object型別的值 /// </summary> /// <param name="transaction">一個已存在的資料庫事務物件</param> /// <param name="commandType">命令型別</param> /// <param name="commandText">Oracle儲存過程名稱或PL/SQL命令</param> /// <param name="commandParameters">命令引數集合</param> /// <returns>當前事務查詢操作返回的結果集中位於第一行第一列的Object型別的值</returns> internal static object ExecuteScalar(OracleTransaction transaction, CommandType commandType, string commandText, params OracleParameter[] commandParameters) { if (transaction == null) throw new ArgumentNullException("當前資料庫事務不存在"); OracleConnection connection = transaction.Connection; if (connection == null) throw new ArgumentException("當前事務所在的資料庫連線不存在"); OracleCommand command = new OracleCommand(); object result = null; try { PrepareCommand(command, connection, transaction, commandType, commandText, commandParameters); result = command.ExecuteScalar(); command.Parameters.Clear(); } catch { throw; } finally { transaction.Dispose(); command.Dispose(); connection.Close(); connection.Dispose(); } return result; } /// <summary> /// 執行資料庫查詢操作,返回結果集中位於第一行第一列的Object型別的值 /// </summary> /// <param name="connection">資料庫連線物件</param> /// <param name="cmdType">Command型別</param> /// <param name="cmdText">Oracle儲存過程名稱或PL/SQL命令</param> /// <param name="commandParameters">命令引數集合</param> /// <returns>當前查詢操作返回的結果集中位於第一行第一列的Object型別的值</returns> internal static object ExecuteScalar(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { if (connection == null) throw new ArgumentException("當前資料庫連線不存在"); OracleCommand command = new OracleCommand(); object result = null; try { PrepareCommand(command, connection, null, cmdType, cmdText, commandParameters); result = command.ExecuteScalar(); command.Parameters.Clear(); } catch { throw; } finally { command.Dispose(); connection.Close(); connection.Dispose(); } return result; } /// <summary> /// 執行資料庫命令前的準備工作 /// </summary> /// <param name="command">Command物件</param> /// <param name="connection">資料庫連線物件</param> /// <param name="trans">事務物件</param> /// <param name="cmdType">Command型別</param> /// <param name="cmdText">Oracle儲存過程名稱或PL/SQL命令</param> /// <param name="commandParameters">命令引數集合</param> private static void PrepareCommand(OracleCommand command, OracleConnection connection, OracleTransaction trans, CommandType cmdType, string cmdText, OracleParameter[] commandParameters) { if (connection.State != ConnectionState.Open) connection.Open(); command.Connection = connection; command.CommandText = cmdText; command.CommandType = cmdType; if (trans != null) command.Transaction = trans; if (commandParameters != null) { foreach (OracleParameter parm in commandParameters) command.Parameters.Add(parm); } } /// <summary> /// 將.NET日期時間型別轉化為Oracle相容的日期時間格式字串 /// </summary> /// <param name="date">.NET日期時間型別物件</param> /// <returns>Oracle相容的日期時間格式字串(如該字串:TO_DATE('2007-12-1','YYYY-MM-DD'))</returns> internal static string GetOracleDateFormat(DateTime date) { return "TO_DATE('" + date.ToString("yyyy-M-dd") + "','YYYY-MM-DD')"; } /// <summary> /// 將.NET日期時間型別轉化為Oracle相容的日期格式字串 /// </summary> /// <param name="date">.NET日期時間型別物件</param> /// <param name="format">Oracle日期時間型別格式化限定符</param> /// <returns>Oracle相容的日期時間格式字串(如該字串:TO_DATE('2007-12-1','YYYY-MM-DD'))</returns> internal static string GetOracleDateFormat(DateTime date, string format) { if (format == null || format.Trim() == "") format = "YYYY-MM-DD"; return "TO_DATE('" + date.ToString("yyyy-M-dd") + "','" + format + "')"; } /// <summary> /// 將指定的關鍵字處理為模糊查詢時的合法引數值 /// </summary> /// <param name="source">待處理的查詢關鍵字</param> /// <returns>過濾後的查詢關鍵字</returns> internal static string HandleLikeKey(string source) { if (source == null || source.Trim() == "") return null; source = source.Replace("[", "[]]"); source = source.Replace("_", "[_]"); source = source.Replace("%", "[%]"); return ("%" + source + "%"); } /// <summary> /// 將文字內容寫入到資料庫的CLOB欄位中(不可用:報連線被關閉的異常) /// </summary> /// <param name="connectionString">資料庫連線字串</param> /// <param name="table">資料庫表名稱</param> /// <param name="where">指定的WHERE條件語句</param> /// <param name="clobField">CLOB欄位的名稱</param> /// <param name="content">要寫入的文字內容</param> internal static void WriteCLOB(string table, string where, string clobField, string content) { if (String.IsNullOrEmpty(connstr) || String.IsNullOrEmpty(table) || String.IsNullOrEmpty(clobField)) return; using (OracleConnection connection = new OracleConnection(connstr)) { OracleCommand command = null; try { connection.Open(); command = connection.CreateCommand(); command.CommandText = "SELECT " + clobField + " FROM " + table + " WHERE " + where + " FOR UPDATE"; OracleDataReader reader = command.ExecuteReader(); if (reader != null && reader.HasRows) { reader.Read(); command.Transaction = command.Connection.BeginTransaction(); OracleLob lob = reader.GetOracleLob(0); byte[] buffer = Encoding.Unicode.GetBytes(content); if (lob != OracleLob.Null) lob.Erase(); lob.Write(buffer, 0, ((buffer.Length % 2 == 0) ? buffer.Length : (buffer.Length - 1))); command.Transaction.Commit(); reader.Close(); } } catch { command.Transaction.Rollback(); throw; } finally { command.Dispose(); connection.Close(); connection.Dispose(); } } } /// <summary> /// 從資料庫中讀取CLOB欄位的內容並進行輸出 /// </summary> /// <param name="connectionString">資料庫連線字串</param> /// <param name="table">資料庫表名稱</param> /// <param name="where">指定的WHERE條件語句</param> /// <param name="clobField">CLOB欄位的名稱</param> /// <param name="output">儲存內容輸出的字串變數</param> internal static void ReadCLOB(string connectionString, string table, string where, string clobField, ref string output) { if (String.IsNullOrEmpty(connectionString) || String.IsNullOrEmpty(table) || String.IsNullOrEmpty(clobField)) return; using (OracleConnection connection = new OracleConnection(connectionString)) { OracleCommand command = null; StreamReader stream = null; try { connection.Open(); command = connection.CreateCommand(); command.CommandText = "SELECT " + clobField + " FROM " + table + " WHERE " + where; OracleDataReader reader = command.ExecuteReader(); if (reader != null && reader.HasRows) { reader.Read(); command.Transaction = command.Connection.BeginTransaction(); OracleLob lob = reader.GetOracleLob(0); if (lob != OracleLob.Null) { stream = new StreamReader(lob, Encoding.Unicode); output = stream.ReadToEnd().Trim(); command.Transaction.Commit(); reader.Close(); } } } catch { command.Transaction.Rollback(); throw; } finally { stream.Close(); command.Dispose(); connection.Close(); connection.Dispose(); } } } }
相關推薦
.NET/C#/Oracle資料庫操作類
using System; using System.Data; using System.Collections.Generic; using System.Configuration; using System.Data.OracleClient;
C# Oracle資料庫操作類
C# Oracle資料庫操作類 1 using System; 2 using System.Data; 3 using System.Collections.Generic; 4 using System.Configuration; 5 using System.D
SQLite Helper類,基於.net c#的SQLite資料庫操作類
SQLite這個精巧的小資料庫,無需安裝軟體,只需要一個System.Data.SQLite.DLL檔案即可操作SQLite資料庫。但是據說功能卻非常強大。 簡介: SQLite是一個開源資料庫,現在已變得越來越流行,它的體積很小,被廣泛應用於各種不同型別的應用中。SQLi
ASP.NET MongoDB資料庫操作類
1、Web.config檔案中配置資料庫連線資訊,如下程式碼:<appSettings> <!--連線MongoDB資料庫連線字串開始--> <add key="MongoIP" value="192.168.33.162" /&
【asp.net之Web Form】編寫抽象工廠資料庫操作類
理解抽象工廠 在ADO.NET對SqlServer,Mysql等的操作步驟類似,不同的是: SqlServer的操作使用的是SqlConnection、SqlCommand,SqlDataAdapter; MySql使用的是MySqlConnection、
ASP.NET資料庫操作類——打包
using System; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Web; using System.W
C# 自定義資料庫操作類 DataBase
呼叫示例: using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Web
C# Oracle資料庫連線及操作
1、 將光碟放入光碟機,自動彈出安裝介面,選擇開始安裝; 2、 歡迎:下一步; 3、 檔案定位,所有內容預設,如果更改oracle安裝路徑,在目標路徑中進行更改,下一步; 4、 可用產品:伺服器端選擇第一個
ASP.NET C#各種資料庫連線字串大全——SQLServer、Oracle、Access
剛開始學習C#開發專案時,長期會為了寫一個安全的高效的資料庫連線發愁。我發現現在很多剛開始學習的朋友和有些做了一兩年的朋友,也有點犯愁,我就貼上這個程式碼,給自己以後做個參考,也給朋友做個學習的參考。 我主要在這裡統計了.NET專案下常用的資料庫連線字串:SQ
java操作ORACLE資料庫工具類(JDBC)
package com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSe
C#的SQL操作類實例
ace direct 功能實現 .exe mat post ssa info () 本文實例講述了C#的SQL操作類,分享給大家供大家參考。具體方法如下: 代碼如下: using System; using System.Collections.Generic;
C#對XML操作類
C#對XML操作類 該類包含了對XML檔案的建立,新增,讀取,刪除,修改等操作 //#define isUnity #if isUnity using UnityEngine; #endif using System.Collections; using System; using System.C
ADO.NET 封裝的資料庫幫助類
using System; using System.Data; using System.Configuration; using System.Data.SqlClient; namespace DAL { /// <summary> /// 資料庫幫助
利用c3p0的QueryRunner類封裝資料庫操作類
文章目錄 前言 1. 準備 2. 封裝資料庫連線 3. 使用QueryRunner類,實現對資料表的 insert delete update 4. 小結 前言 鑑於最近做一個小專案,想要自己封裝資料庫操作類,但是網上的各種
MySQL資料庫操作類(PHP實現,支援連貫操作)
<?php /** * Author: helen * CreateTime: 2016/4/12 20:14 * description: 資料庫操作類(僅對接MySQL資料庫,主要利用MySQLi函式) */ class Database{ //MySQL主機地址 priv
簡單實用的PHP資料庫操作類
一個簡單的php mysql資料庫操作類,含有增刪改查以及分頁和排序功能 直接例項化 $db_class 即可使用 !<?php class db_class{ public $db_url; //連線地址 public $db_username; //連線名
php精闢程式碼欣賞,資料庫操作類,封裝所有資料庫操作
下面是php各種程式碼庫,個人分享 <?php //******************************************************************* //此處構造一個數據庫操作類,封裝所有資料庫操作 //可以擴充套件便於後臺管理程
查詢oracle資料庫操作記錄
可以使用以下查詢語句查詢oracle相關資訊: 1、查詢oracle修改記錄 select t.SQL_TEXT, t.FIRST_LOAD_TIME from v$sqlarea t where
PHP輕量級資料庫操作類Medoo增加、刪除、修改、查詢例子
$database = new medoo ( "my_database" );$datas = $database->select ( "account", [ "user_name", "email" ], [ "user_id[>]" => 100 ] );// $datas
基於VB.Net的SQL資料庫操作
本人是根據自己的經歷,將有基於VB.Net的資料庫的操作整理如下,或許不是很完整,後面有機會再補充。現將程式碼裡面的大概內容敘述一下: New(connectstr)方法是建立帶引數的SQLDataBase的例項; UpdateSQL(updatecmd)方法是執行up