(原) 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);
}
}
}
}
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) 编辑 收藏 举报