毛毛的小窝 — 关注技术交流、让我们一起成长

导航

(原) ODP.NET 演示以输出参数的形式获取Clob对象

using System;
using System.Data;
using System.Text;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

namespace Sample22
{
    
/// <summary>
    
/// 演示以输出参数的形式获取Clob对象
    
/// </summary>
    class Program
    {
        
static void Main(string[] args)
        {
            
// Connect
            string constr = "User Id=scott;Password=tiger;Data Source=bjoracle";
            OracleConnection conn 
= Connect(constr);

            
// Setup
            Setup(conn);

            
// Set the command
            OracleCommand cmd = new OracleCommand("begin select story into :1 from multimedia_tab where thekey=1;end;");
            cmd.Connection 
= conn;
            cmd.CommandType 
= CommandType.Text;

            
// Bind a parameter
            OracleParameter param = cmd.Parameters.Add("clobdata", OracleDbType.Clob);
            param.Direction 
= ParameterDirection.Output;

            
// Execute command
            try
            {
                cmd.ExecuteNonQuery();

                
// Obtain LOB data as a .NET Type.
                string lob_data = (string)((OracleClob)(cmd.Parameters[0].Value)).Value;

                
// Print out the text
                Console.WriteLine("Data is: " + lob_data);
            }
            
catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            
finally
            {
                
// Dispose OracleCommand object
                cmd.Dispose();

                
// Close and Dispose OracleConnection object
                conn.Close();
                conn.Dispose();
            }

            
// Waiting
            Console.ReadLine();
        }

        
// Open a new Connection
        public static OracleConnection Connect(string connectStr)
        {
            OracleConnection conn 
= new OracleConnection(connectStr);
            
try
            {
                conn.Open();
            }
            
catch (Exception ex)
            {
                Console.WriteLine(
"Error: {0}", ex.Message);
            }

            
return conn;
        }

        
// 初始化并设置测试数据
        public static void Setup(OracleConnection conn)
        {
            StringBuilder blr;
            OracleCommand cmd 
= new OracleCommand("", conn);

            blr 
= new StringBuilder();
            blr.Append(
"DROP TABLE multimedia_tab");
            cmd.CommandText 
= blr.ToString();
            
try
            {
                cmd.ExecuteNonQuery();
            }
            
catch (Exception ex)
            {
                Console.WriteLine(
"Warning: {0}", ex.Message);
            }

            blr 
= new StringBuilder();
            blr.Append(
"CREATE TABLE multimedia_tab(thekey NUMBER(4) PRIMARY KEY,");
            blr.Append(
"story CLOB, sound BLOB)");
            cmd.CommandText 
= blr.ToString();
            
try
            {
                cmd.ExecuteNonQuery();
            }
            
catch (Exception ex)
            {
                Console.WriteLine(
"Error: {0}", ex.Message);
            }

            blr 
= new StringBuilder();
            blr.Append(
"INSERT INTO multimedia_tab values(");
            blr.Append(
"1,");
            blr.Append(
"'This is a long story. Once upon a time.',");
            blr.Append(
"'897855645645456411321231231231287798778978')");
            cmd.CommandText 
= blr.ToString();
            
try
            {
                cmd.ExecuteNonQuery();
            }
            
catch (Exception ex)
            {
                Console.WriteLine(
"Error: {0}", ex.Message);
            }
        }
    }
}

引用:ODP.NET example

posted on 2007-12-26 14:55  mjgforever  阅读(496)  评论(0编辑  收藏  举报