asp.net 向Oracle数据库表的Clob字段中写入文本编辑器中输入的大段文字信息

简介: 首先需要一个Oracle操作类,OraDbHelper.cs,代码如下:using System;using System.

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


       

相关文章
|
8天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
45 7
|
25天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(3)
Oracle数据库基本概念理解(3)
18 2
|
8天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
35 5
|
16天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
25天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(2)
Oracle数据库基本概念理解(2)
13 1
|
8天前
|
存储 SQL Oracle
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
32 7
|
25天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(1)
Oracle数据库基本概念理解(1)
12 1
|
25天前
|
Oracle 关系型数据库 MySQL
Seata常见问题之oracle 数据库 报 just support mysql如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
53 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
95 5