zoukankan      html  css  js  c++  java
  • CUBRID学习笔记 15 Lobs类型数据

    • BLOB: Binary large object
    • CLOB: Character large object 
    • 一个二进制 一个字符类型

      二进制的读取

    CUBRIDCommand cmd = new CUBRIDCommand(sql, conn);
    DbDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
        CUBRIDBlob bImage = (CUBRIDBlob)reader[0];
        byte[] bytes = new byte[(int)bImage.BlobLength];
        bytes = bImage.getBytes(1, (int)bImage.BlobLength);
        //...
    }


    更新 clob类型
    string sql = "UPDATE t SET c = ?";
    CUBRIDCommand cmd = new CUBRIDCommand(sql, conn);
    
    CUBRIDClob Clob = new CUBRIDClob(conn);
    
    //Use the ConnectionString for testing
    str = "server=localhost;database=demodb;port=33000;user=public;password="
    
    Clob.setString(1, str);
    CUBRIDParameter param = new CUBRIDParameter();
    param.ParameterName = "?";
    param.CUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_CLOB;
    param.Value = Clob;
    cmd.Parameters.Add(param);
    cmd.ExecuteNonQuery();

    下面来看个完整的例子
    using CUBRID.Data.CUBRIDClient;
    using System.Diagnostics;
    using System;
    using System.IO;
    using System.Data.Common;
    
    namespace LobExample
    {
        class Program
        {
            private static void ExecuteSQL(string sql, CUBRIDConnection conn)
            {
                using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
                {
                    cmd.ExecuteNonQuery();
                }
            }
    
            private static void CreateTestTableLOB(CUBRIDConnection conn)
            {
                ExecuteSQL("drop table if exists t", conn);
                ExecuteSQL("create table t(b BLOB, c CLOB)", conn);
            }
    
            private static void CleanupTestTableLOB(CUBRIDConnection conn)
            {
                ExecuteSQL("drop table if exists t", conn);
            }
    
            static void Main(string[] args)
            {
                CUBRIDConnectionStringBuilder sb = new CUBRIDConnectionStringBuilder("localhost", "demodb", "public", "", "33000");
                using (CUBRIDConnection conn = new CUBRIDConnection(sb.GetConnectionString()))
                {
                    conn.Open();
    
                    CreateTestTableLOB(conn);
    
                    string sql = "insert into t (c) values(?)";
                    CUBRIDCommand cmd = new CUBRIDCommand(sql, conn);
    
                    CUBRIDClob Clob = new CUBRIDClob(conn);
    
                    String str = conn.ConnectionString;
    
                    StreamReader r = new StreamReader("test.txt");
                    string writestring = r.ReadToEnd();
                    r.Close();
    
                    Clob.setString(1, writestring);
    
                    CUBRIDParameter param = new CUBRIDParameter();
                    param.ParameterName = "?";
                    param.CUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_CLOB;
                    param.Value = Clob;
                    cmd.Parameters.Add(param);
                    cmd.ExecuteNonQuery();
                    cmd.Close();
    
                    string sql2 = "SELECT c from t";
                    using (CUBRIDCommand cmd2 = new CUBRIDCommand(sql2, conn))
                    {
                        DbDataReader reader = cmd2.ExecuteReader();
    
                        while (reader.Read())
                        {
                            CUBRIDClob cImage = (CUBRIDClob)reader[0];
                            string str2 = cImage.getString(1, (int)cImage.ClobLength);
    
                            StreamWriter w = new StreamWriter("testout.txt");
                            w.Write(str2);
                            w.Close();
    
                            StreamReader r2 = new StreamReader("testout.txt");
                            string readstring = r2.ReadToEnd();
                            r2.Close();
    
                            Debug.Assert(writestring.Length == readstring.Length, "The inserted CLOB length is not valid!");
                            Debug.Assert(writestring.Equals(readstring), "The CLOB was not inserted correctly!");
                        }
                    }
    
                    CleanupTestTableLOB(conn);
    
                    conn.Close();
                }
            }
        }
    }





  • 相关阅读:
    Mac开发——设置关闭窗口之后点击Dock中的图标可以再次打开窗口
    添加学院的 Exchange邮箱到手持设备中
    黑苹果 装SVN工具 cornerstone无法打开解决办法——网卡内建
    解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题
    Lua中的正则表达式的使用
    C++11 标准新特性:Defaulted 和 Deleted 函数
    HTML5基础
    第一本书考试错题
    字符串
    带参数的方法
  • 原文地址:https://www.cnblogs.com/wang2650/p/5283884.html
Copyright © 2011-2022 走看看