CUBRID学习笔记 15 Lobs类型数据
二进制的读取
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();
}
}
}
}
CUBRID学习笔记 15 Lobs类型数据的更多相关文章
- SAS学习笔记15 SAS导入数据(import txt csv xlsx spss)
- Hadoop学习笔记—5.自定义类型处理手机上网日志
转载自http://www.cnblogs.com/edisonchou/p/4288737.html Hadoop学习笔记—5.自定义类型处理手机上网日志 一.测试数据:手机上网日志 1.1 关于这 ...
- R学习笔记(4): 使用外部数据
来源于:R学习笔记(4): 使用外部数据 博客:心内求法 鉴于内存的非持久性和容量限制,一个有效的数据处理工具必须能够使用外部数据:能够从外部获取大量的数据,也能够将处理结果保存.R中提供了一系列的函 ...
- Ext.Net学习笔记15:Ext.Net GridPanel 汇总(Summary)用法
Ext.Net学习笔记15:Ext.Net GridPanel 汇总(Summary)用法 Summary的用法和Group一样简单,分为两步: 启用Summary功能 在Feature标签内,添加如 ...
- java学习笔记01--数据类型
java学习笔记01--数据类型 java数据类型划分 分为两大类型: 1)基本数据类型:类似于普通的值. 2)引用数据类型:传递的是内存的地址. 浮点类型实际上就是表示小数. java基本数据类型 ...
- C#学习笔记之值类型与引用类型
[TOC] C#学习笔记之值类型与引用类型 1.值类型与引用类型 1.1 深层区别 值类型与引用类型有不同的内存分布,这导致了不同的内存管理机制: 值类型由OS负责内存管理 引用类型由垃圾回收器(GC ...
- SQL反模式学习笔记15 分组
目标:查询得到每组的max(或者min等其他聚合函数)值,并且得到这个行的其他字段 反模式:引用非分组列 单值规则:跟在Select之后的选择列表中的每一列,对于每个分组来说都必须返回且仅返回一直值. ...
- .NET MVC 学习笔记(六)— 数据导入
.NET MVC 学习笔记(六)—— 数据导入 在程序使用过程中,有时候需要新增大量数据,这样一条条数据去Add明显不是很友好,这时候最好就是有一个导入功能,导入所需要的数据,下面我们就一起来看一下导 ...
- WebGL three.js学习笔记 6种类型的纹理介绍及应用
WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...
随机推荐
- Angularjs之基本概念梳理(一)
1.Angularjs指令属性ng-app和ng-controller的理解 ng-app指令-标记了AngularJS脚本的作用域,在<html>中添加ng-app属性即说明整个< ...
- bug的约束
1.bug的标题:主模块-子模块-页面-功能描述-bug的描述
- 阿里BCG重磅报告《人工智能,未来致胜之道》
阿里BCG重磅报告<人工智能,未来致胜之道> 阿里云研究中心.波士顿咨询公司以及Alibaba Innovation Ventures合作共同推出的<人工智能:未来制胜之道>这 ...
- Hadoop三种安装模式:单机模式,伪分布式,真正分布式
Hadoop三种安装模式:单机模式,伪分布式,真正分布式 一 单机模式standalone单 机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守 ...
- BAT 批处理脚本 教程
第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以 ...
- java.lang.Runtime类总结 【转】
转自:http://blog.chinaunix.net/uid-128922-id-289994.html Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类 ...
- Hibernate,JPA注解@DynamicInsert和@DynamicUpdate,Hibernate如何插入sysdate
@DynamicInsert属性:设置为true,设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false. ...
- Linux中PHP如何安装curl扩展方法
如果php已经在系统编译好,后来又需要添加新的扩展. 一种方式就是重新完全编译php,另一种方式就是单独编译扩展库,以extension的形式扩展. 下面以安装curl扩展为例: 1.下载curl安装 ...
- Oracle列操作引起的全表扫描
首先是一种比较明显的情况: select * from table where column + 1 = 2 这里对column进行了列操作,加1以后,与column索引里的内容对不上,导致colum ...
- Sublime Text2一些快捷键收藏
快捷键 XP版 Ctrl+P 搜索文件 Ctrl+R 搜索方法 ...