zoukankan      html  css  js  c++  java
  • 使用oracle的blob clob nblob的方法 上篇

    由于oracle中的各种字符数据类型最大不超过4000字,所以使用大字段是必须的。

    1.引用oracle 客户端

    这里是将一个text文件类容写入blob字段里

    代码
    1 public void WriteLobExample(OracleCommand cmd)
    2 {
    3 cmd.Transaction = cmd.Connection.BeginTransaction();
    4 cmd.CommandText = "SELECT * FROM tablewithlobs FOR UPDATE";
    5 OracleDataReader reader = cmd.ExecuteReader();
    6 using (reader)
    7 {
    8 reader.Read();
    9 OracleLob blob = reader.GetOracleLob(1);
    10 FileStream fs = new FileStream("f:\\1.txt", FileMode.Open);
    11 byte[] buffer = new byte[fs.Length];//文件大时存在问题,不能取出全部。
    12 fs.Read(buffer, 0,Convert.ToInt32((fs.Length)));//文件大时转为int溢出。
    13 blob.Write(buffer, 0,Convert.ToInt32(fs.Length));
    14 //blob.Write(buffer, 0, 2);
    15 //blob.Position = 0;
    16 //Console.WriteLine(blob.LobType + ".Write(" + buffer + ", 0, 2) => " + blob.Value);
    17   cmd.Transaction.Commit();
    18 }

    这里是将blob字段取出来显示在text控件上。

    代码
    1 private void button2_Click(object sender, EventArgs e)
    2 {
    3 OracleConnection conn = new OracleConnection("Data Source=testblob;User Id=test;Password=test");
    4 conn.Open();
    5 OracleCommand cmd = conn.CreateCommand();
    6 cmd.Transaction = cmd.Connection.BeginTransaction();
    7 cmd.CommandText = "SELECT * FROM tablewithlobs FOR UPDATE";
    8 OracleDataReader reader = cmd.ExecuteReader();
    9 using (reader)
    10 {
    11 reader.Read();
    12 OracleLob blob = reader.GetOracleLob(1);
    13 int length=Convert.ToInt32(blob.Length);
    14 //FileStream fs = new FileStream("f:\\1.doc", FileMode.Open);
    15   byte[] buffer = new byte[length];
    16 blob.Read(buffer, 0, length);
    17 // byte b = 41;
    18   t.Text = System.Text.Encoding.Default.GetString(buffer);
    19 //blob.Write(buffer, 0, 2);
    20 //blob.Position = 0;
    21 //Console.WriteLine(blob.LobType + ".Write(" + buffer + ", 0, 2) => " + blob.Value);
    22   cmd.Transaction.Commit();
    23 }
    24 }
    Right! is "Fuck GIS",but don't think too much; It means reach a high during playing GIS. Come on!
  • 相关阅读:
    Uboot启动流程分析(四)
    git更新提交到仓库
    MSM8953通过ADB进行AT指令操作
    Uboot启动流程分析(五)
    去除字符串中多个空格,保留一个空格
    socket握手SYN和ACK理解
    Redhat6更改yum源 (转)
    form提供的两种数据传输方式 get和post method=”post“和method=”get”
    linux误删除恢复(未验证)
    web前端学习路线
  • 原文地址:https://www.cnblogs.com/jsbrml/p/1915188.html
Copyright © 2011-2022 走看看