asp.net 向Oracle資料庫表的Clob欄位中寫入文字編輯器中輸入的大段文字資訊

暖楓無敵發表於2013-05-10

首先需要一個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);


       

相關文章