首先需要一個Oracle操作類,OraDbHelper.cs,代碼如下:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;using System.Data.OracleClient;/// <summary>///OraDbHelper 的摘要說明/// </summary>public class OraDbHelper{ private string connectionString; /// <summary> /// 設定資料庫字串的串連 /// </summary> public string ConnectionString { set { connectionString = value; } } public OraDbHelper(string connectionString) { this.connectionString = connectionString; } #region ExecuteDataTable /// <summary> /// 執行一個查詢,並返回結果集 /// </summary> /// <param name="commandText">要執行的查詢SQL文本命令</param> /// <returns>返回查詢結果集</returns> public DataTable ExecuteDataTable(string commandText) { return ExecuteDataTable(commandText, CommandType.Text, null); } /// <summary> /// 執行一個查詢,並返回查詢結果 /// </summary> /// <param name="commandText">要執行的SQL語句</param> /// <param name="commandType">要執行的查詢語句的類型,如預存程序或者SQL文本命令</param> /// <returns>返回查詢結果集</returns> public DataTable ExecuteDataTable(string commandText, CommandType commandType) { return ExecuteDataTable(commandText, commandType, null); } /// <summary> /// 執行一個查詢,並返回查詢結果 /// </summary> /// <param name="commandText">要執行的SQL語句</param> /// <param name="commandType">要執行的查詢語句的類型,如預存程序或者SQL文本命令</param> /// <param name="parameters">PL-SQL 陳述式或預存程序的參數數組</param> /// <returns></returns> public DataTable ExecuteDataTable(string commandText, CommandType commandType, params OracleParameter[] parameters) { DataTable data = new DataTable();//執行個體化DataTable,用於裝載查詢結果集 using (OracleConnection connection = new OracleConnection(connectionString)) { using (OracleCommand command = new OracleCommand(commandText, connection)) { command.CommandType = commandType;//設定command的CommandType為指定的CommandType //如果同時傳入了參數,則添加這些參數 if (parameters != null) { foreach (OracleParameter parameter in parameters) { command.Parameters.Add(parameter); } } //通過包含查詢SQL的SqlCommand執行個體來執行個體化SqlDataAdapter OracleDataAdapter adapter = new OracleDataAdapter(command); adapter.Fill(data);//填充DataTable } } return data; } #endregion ExecuteDataTable #region ExecuteReader /// <summary> /// 將 CommandText 發送到 Connection 並產生一個 OracleDataReader。 /// </summary> /// <param name="commandText">要執行的查詢SQL文本命令</param> /// <returns></returns> public OracleDataReader ExecuteReader(string commandText) { return ExecuteReader(commandText, CommandType.Text, null); } /// <summary> /// 將 CommandText 發送到 Connection 並產生一個 OracleDataReader。 /// </summary> /// <param name="commandText">要執行的SQL語句</param> /// <param name="commandType">要執行的查詢語句的類型,如預存程序或者SQL文本命令</param> /// <returns></returns> public OracleDataReader ExecuteReader(string commandText, CommandType commandType) { return ExecuteReader(commandText, commandType, null); } /// <summary> /// 將 CommandText 發送到 Connection 並產生一個 OracleDataReader。 /// </summary> /// <param name="commandText">要執行的SQL語句</param> /// <param name="commandType">要執行的查詢語句的類型,如預存程序或者SQL文本命令</param> /// <param name="parameters">Transact-SQL 陳述式或預存程序的參數數組</param> /// <returns></returns> public OracleDataReader ExecuteReader(string commandText, CommandType commandType, OracleCommand[] parameters) { OracleConnection connection = new OracleConnection(connectionString); OracleCommand command = new OracleCommand(commandText, connection); //如果同時傳入了參數,則添加這些參數 if (parameters != null) { foreach (OracleCommand parameter in parameters) { command.Parameters.Add(parameter); } } connection.Open(); //CommandBehavior.CloseConnection參數指示關閉Reader對象時關閉與其關聯的Connection對象 return command.ExecuteReader(CommandBehavior.CloseConnection); } #endregion ExecuteReader #region ExecuteScalar /// <summary> /// 從資料庫中檢索單個值(例如一個彙總值)。 /// </summary> /// <param name="commandText">要執行的查詢PL-SQL文本命令</param> /// <returns></returns> public Object ExecuteScalar(string commandText) { return ExecuteScalar(commandText, CommandType.Text, null); } /// <summary> /// 從資料庫中檢索單個值(例如一個彙總值)。 /// </summary> /// <param name="commandText">要執行的SQL語句</param> /// <param name="commandType">要執行的查詢語句的類型,如預存程序或者PL-SQL文本命令</param> /// <returns></returns> public Object ExecuteScalar(string commandText, CommandType commandType) { return ExecuteScalar(commandText, commandType, null); } /// <summary> /// 從資料庫中檢索單個值(例如一個彙總值)。 /// </summary> /// <param name="commandText">要執行的SQL語句</param> /// <param name="commandType">要執行的查詢語句的類型,如預存程序或者SQL文本命令</param> /// <param name="parameters">PL-SQL 陳述式或預存程序的參數數組</param> /// <returns></returns> public Object ExecuteScalar(string commandText, CommandType commandType, OracleParameter[] parameters) { object result = null; using (OracleConnection connection = new OracleConnection(connectionString)) { using (OracleCommand command = new OracleCommand(commandText, connection)) { command.CommandType = commandType;//設定command的CommandType為指定的CommandType //如果同時傳入了參數,則添加這些參數 if (parameters != null) { foreach (OracleParameter parameter in parameters) { command.Parameters.Add(parameter); } } connection.Open();//開啟資料庫連接 result = command.ExecuteScalar(); } } return result;//返回查詢結果的第一行第一列,忽略其它行和列 } #endregion ExecuteScalar #region ExecuteNonQuery /// <summary> /// 對資料庫執行增刪改操作 /// </summary> /// <param name="commandText">要執行的查詢pl-sql文本命令</param> /// <returns></returns> public int ExecuteNonQuery(string commandText) { return ExecuteNonQuery(commandText, CommandType.Text, null); } /// <summary> /// 對資料庫執行增刪改操作 /// </summary> /// <param name="commandText">要執行的pl-sql語句</param> /// <param name="commandType">要執行的查詢語句的類型,如預存程序或者pl-sql文本命令</param> /// <returns></returns> public int ExecuteNonQuery(string commandText, CommandType commandType) { return ExecuteNonQuery(commandText, commandType, null); } /// <summary> /// 對資料庫執行增刪改操作 /// </summary> /// <param name="commandText">要執行的pl-sql語句</param> /// <param name="commandType">要執行的查詢語句的類型,如預存程序或者pl-sql文本命令</param> /// <param name="parameters">pl-sql 語句或預存程序的參數數組</param> /// <returns>返回執行操作受影響的行數</returns> public int ExecuteNonQuery(string commandText, CommandType commandType, OracleParameter[] parameters) { int count = 0; using (OracleConnection connection = new OracleConnection(connectionString)) { using (OracleCommand command = new OracleCommand(commandText, connection)) { command.CommandType = commandType;//設定command的CommandType為指定的CommandType //如果同時傳入了參數,則添加這些參數 if (parameters != null) { foreach (OracleParameter parameter in parameters) { command.Parameters.Add(parameter); } } connection.Open();//開啟資料庫連接 count = command.ExecuteNonQuery(); } } return count;//返回執行增刪改操作之後,資料庫中受影響的行數 } #endregion ExecuteNonQuery}
cs代碼中調用代碼如下:
OraDbHelper dbHelper = new OraDbHelper(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConnectionString"].ConnectionString.ToString()); string sql = "insert into SYIT_POSTINFORM " + " ( ZYXTYPE,GRADENM,TITLE,FBRNM,FBTM,YXTM,CONTS,FROMSR) values "; sql += "( '" + sclass + "'"; sql += ", '" + gwxx[1] + "'"; sql += ", '" + gwxx[0] + "'"; sql += ",' " + gwxx[2] + "'"; sql += ", to_date('" + gwxx[3] + "','yyyy/MM/DD')"; sql += ", to_date('" + gwxx[5] + "','yyyy/MM/DD')"; sql += ", :lgContent "; sql += ", '" + gwxx[4] + "'"; sql += " )"; OracleParameter[] parameters = { new OracleParameter("lgContent",OracleType.Clob) }; parameters[0].Value = gwxx[6]; dbHelper.ExecuteNonQuery(sql, CommandType.Text, parameters);