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();
                }
            }
        }
    }





  • 相关阅读:
    js表单提交回调函数
    sublime text3下BracketHighlighter的配置方法
    不同版本的jquery的复选框checkbox的相关问题
    jquery键盘常见事件
    jQuery学习笔记(一)
    sublime text按esc经常进入command mode(不能输入任何东西)
    sublime text光标移入移出括号的快捷键设置
    sublime text3 自己定义的不同浏览器的预览快捷键
    grains和pillar的联合使用
    自定义模块和grains
  • 原文地址:https://www.cnblogs.com/wang2650/p/5283884.html
Copyright © 2011-2022 走看看