ODP.Net基础应用——CLOB类型数据

  • BLOB类型
  • CLOB/NCLOB类型
  • BFILE类型
  • RAW类型

BLOB类型

BLOB类型数据常用来存储图像、视频和音频

BLOB数据的插入

string imagePath = @"D:\Image\Icons\COMS_icon.png";
byte[] _imageStream = System.IO.File.ReadAllBytes(imagePath);  

OracleConnection _conn = new OracleConnection(connString);
_conn.Open();
OracleCommand _cmd = _conn.CreateCommand();
_cmd.CommandText = "INSERT INTO PRODUCTFILES(PRODUCTID,FILEATTACHMENT)
         VALUES(:v_ProductId,:v_FileAttachment)";
_cmd.Parameters.Add(new OracleParameter("v_ProductId","E1"));
OracleBlob _image = new OracleBlob(_conn);
_image.Write(_imageStream, 0, _imageStream.Length);
_cmd.Parameters.Add(new OracleParameter("v_FileAttachment", _image));
int _result = _cmd.ExecuteNonQuery();
if(_result == 1) { MessageBox.Show("done"); }

_conn.Close();
_conn.Dispose();
_conn = null;

BLOB数据的查询显示

拖一个picturebox控件进来

OracleConnection _conn = new OracleConnection(connString);
_conn.Open();
OracleCommand _cmd = _conn.CreateCommand();
_cmd.CommandText = "SELECT FILEATTACHMENT FROM PRODUCTFILES WHERE PRODUCTID=:v_ProductId";
_cmd.Parameters.Add(new OracleParameter("v_ProductId", TBX.Text));
OracleDataReader _reader = _cmd.ExecuteReader();

if(_reader.HasRows)
{
    if(_reader.Read())
    {
        OracleBlob _image = _reader.GetOracleBlob(_reader.GetOrdinal("FILEATTACHMENT"));
        pictureBox.Image = Image.FromStream(new System.IO.MemoryStream(_image.Value ));
    }
}
_conn.Close();
_conn.Dispose();
_conn = null;
Console.WriteLine("done");

输入索引E1,点击按钮:
这里写图片描述

CLOB/NCLOB类型

CLOB/NCLOB类型数据常用来存储大型文本

CLOB数据的插入

与BLOB类型基本相似,下面只贴出核心代码

OracleCommand _cmd = _conn.CreateCommand();
_cmd.CommandText = "INSERT INTO PRODUCTFILES(PRODUCTID,REMARKS)
         VALUES(:v_ProductId,:v_Remarks)";
_cmd.Parameters.Add(new OracleParameter("v_ProductId","E1"));
OracleClob _text = new OracleClob(_conn);
_text.Write(TBX.Text.ToCharArray(), 0, TBX.Text.Length);
_cmd.Parameters.Add(new OracleParameter("v_Remarks",_text));

CLOB数据的获取

OracleClob _text = _reader.GetOracleClob(_reader.GetOrdinal("REMARKS"));
TBX.Text = _text.Value;

BFILE类型

BFILE指向存储在操作系统外部的数据。Your SQL statements refer to these folders not by path but by logical directory name.
首先要使账户获得相应的权限,以SYSDBA的身份登录SQL Plus,授权:

GRANT CREATE ANY DIRECTORY TO 用户名;

登录到用户,创建目录:

GRANT OR REPLACE DIRECTORY "PRODUCTFILESFOLDER" AS 'D:\Data\productfiles';

BFILE数据的插入

与BLOB类型基本相似,下面只贴出核心代码

OracleConnection _conn = new OracleConnection(connString);
_conn.Open();
OracleCommand _cmd = _conn.CreateCommand();
_cmd.CommandText = "INSERT INTO PRODUCTFILES(PRODUCTID,FILEATTACHMENT2) " +
    "VALUES(:v_ProductId,BFILENAME('PRODUCTFILESFOLDER',:v_FileName))";
_cmd.Parameters.Add(new OracleParameter("v_ProductId","E1"));
OracleBlob _image = new OracleBlob(_conn);
_image.Write(_imageStream, 0, _imageStream.Length);
_cmd.Parameters.Add(new OracleParameter("v_FileName", "icon.jpg"));
int _result = _cmd.ExecuteNonQuery();

BFILE数据的获取

if(_reader.HasRows)
{
    if(_reader.Read())
    {
        OracleBFile _image = _reader.GetOracleBFile(_reader.GetOrdinal("FILEATTACHMENT2"));
        if(_image.FileExists)
        {
            pictureBox.Image = Image.FromStream(new System.IO.MemoryStream(_image.Value));
        }
        Console.WriteLine("The name of the file is"+_image.FileName);
    }
}

RAW类型

RAW类型用来存储定长字节的数据

RAW数据的插入

OracleParameter _para = new OracleParameter("GUID", OracleDbType.Raw);
_para.Value = System.Guid.NewGuid().ToByteArray();
_cmd.Parameters.Add(_para);

RAW数据的获取

if(_reader.HasRows)
{
     if(_reader.Read())
     {
         OracleBinary _binary = _reader.GetOracleBinary(_reader.GetOrdinal("GUID"));
         System.Guid _guid = new Guid(_binary.Value);
         Console.WriteLine("The GUID is" + _guid.ToString());
     }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值