今天写了一个JDBC操纵db2中大文本字段的demo,可是一直出错,希望大家帮帮忙看看哪里出错了!
数据库定义:
CREATE TABLE
USERINFO
(
USERID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY,
USERNAME VARCHAR(20) NOT NULL,
USERAGE INTEGER,
USERDSP CLOB(200000),
PRIMARY KEY (USERID)
)
数据库操作类:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Clob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class PrepareStatementDemo {
public void add() {
String sqlString = "insert into USERINFO(USERNAME,USERAGE,USERDSP) values(?,?,?)";
BasedJdbc basedJdbc = new BasedJdbc();
PreparedStatement preparedStatement = basedJdbc.getPreparedStatement(sqlString);
File file = new File("D:\\config\\a.txt");
InputStream inputStream = null;
try {
inputStream = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
preparedStatement.setString(1, "userClob");
preparedStatement.setInt(2, 1);
preparedStatement.setAsciiStream(3, inputStream, (int)file.length());
preparedStatement.execute();
} catch (SQLException e) {
e.printStackTrace();
}
basedJdbc.close();
}
}
单元测试:
import org.testng.annotations.Test;
public class PerparedStatementTest {
@Test
public void addTest(){
PrepareStatementDemo prepareStatementDemo = new PrepareStatementDemo();
prepareStatementDemo.add();
}
}
运行后控制台信息:
com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016, SQLERRMC=7;ROOT.USERINFO, DRIVER=4.12.55
at com.ibm.db2.jcc.am.hd.a(hd.java:679)
at com.ibm.db2.jcc.am.hd.a(hd.java:60)
at com.ibm.db2.jcc.am.hd.a(hd.java:127)
at com.ibm.db2.jcc.am.mn.b(mn.java:2290)
at com.ibm.db2.jcc.am.mn.c(mn.java:2273)
at com.ibm.db2.jcc.t4.cb.k(cb.java:370)
at com.ibm.db2.jcc.t4.cb.a(cb.java:62)
at com.ibm.db2.jcc.t4.q.a(q.java:50)
at com.ibm.db2.jcc.t4.sb.b(sb.java:220)
at com.ibm.db2.jcc.am.nn.nc(nn.java:3083)
at com.ibm.db2.jcc.am.nn.b(nn.java:4037)
at com.ibm.db2.jcc.am.nn.hc(nn.java:2422)
at com.ibm.db2.jcc.am.nn.execute(nn.java:2402)
at com.suning.study.jdbc.PrepareStatementDemo.add(PrepareStatementDemo.java:70)
at com.suning.study.jdbc.PerparedStatementTest.addTest(PerparedStatementTest.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:702)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:768)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:87)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
at org.testng.TestNG.run(TestNG.java:1022)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:109)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:202)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:173)
PASSED: addTest
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 0
===============================================
分享到:
相关推荐
本例中,我们讨论如何将DB2数据库中的BLOB数据类型复制到Oracle数据库。 1. **BLOB与CLOB数据类型**: BLOB(Binary Large Object)存储二进制大对象,如图像、音频或视频文件。CLOB(Character Large Object)...
下面是一个具体的例子,展示如何将字符串转化为CLOB类型,并插入到Oracle数据库中: ```csharp using System.Data; using Oracle.ManagedDataAccess.Client; public bool InsertTsbhInfo(string strTB, string ...
当你需要将一个字符串或者Reader对象插入到CLOB字段时,MyBatis默认可能无法正确处理。此时,你需要自定义一个TypeHandler来处理这种转换。创建一个实现`org.apache.ibatis.type.TypeHandler`接口的类,重写`...
3. DB2数据库对象: - 表:数据的结构化存储单元,由列和行组成。 - 视图:虚拟表,基于一个或多个表的查询结果。 - 索引:提高数据检索速度的特殊数据结构。 - 存储过程:预编译的SQL语句集合,可执行复杂操作...
首先,DB2中LOB字段的存储和处理过程是一门深奥的技术,它特别适用于在IBM Z平台上的DB2数据库。LOB数据类型指的是大型对象(Large Object),可以存储大文本文件、音频、视频、图片等非结构化数据。DB2支持的LOB...
以上列举了部分DB2数据库中可能出现的错误码及其含义。了解这些错误码有助于快速定位问题并采取相应的解决方案。当遇到具体的错误码时,应结合具体的应用场景和上下文信息进行综合分析,以便更准确地解决问题。此外...
在数据库管理领域,IBM DB2作为一款高性能的关系型数据库管理系统,提供了丰富的字符串处理函数,以满足数据处理的各种需求。本文将详细介绍DB2中常用的字符串类型函数,并通过具体示例加以说明,帮助读者更好地理解...
多媒体对象存取例程包括建立数据库表、往表中插入数据、查询插入表中的数据、修改数据库中的数据等步骤。 多媒体数据压缩技术是指在不丢失信息接受效果的前提下,按照一定的数学算法或操作方法对原信号数据进行变换...
### IBM DB2通用数据库SQL入门知识点解析 #### 一、IBM DB2简介 IBM DB2是一种功能强大的关系型数据库管理系统(RDBMS),...这些知识点对于初学者来说是非常有价值的资源,有助于他们深入了解DB2数据库的使用方法。
在使用IBM DB2数据库的过程中,开发者可能会遇到各种各样的错误。为了更好地理解和解决这些问题,了解SQLCODE的具体含义至关重要。本文将详细介绍DB2 SQLCODE的相关知识点,包括其基本概念、作用以及如何根据具体的...
在Java编程环境中,DB2数据库的大对象(LOB)操作是一个重要的主题,特别是对于那些处理大量非结构化数据,如图片、视频或者大型文本文件的开发者。大对象包括BLOB(Binary Large Object)和CLOB(Character Large ...
在DB2数据库管理系统的使用过程中,遇到各种SQLCODE是不可避免的。SQLCODE是DB2返回的一个整数值,用于指示SQL语句执行的状态。正数表示成功,负数则表示错误或警告。下面将详细解析部分常见的DB2异常SQLCODE及其...
在提供的内容中,主要讨论了DB2中与文本索引相关的操作和维护。文本索引是数据库为了加速对大量文本数据的查询而建立的一种特殊索引,它使得在非结构化或半结构化的数据中进行全文搜索成为可能。 1. **创建文本索引...
- 在DB2或Oracle中,`CLOB`与`BLOB`类型则与数据库自身的`CLOB`和`BLOB`类型相对应。 2. **Java对象与`CLOB`、`BLOB`的映射** - 当在领域模型(Domain)中处理`CLOB`时,通常将其映射为`String`类型,因为`CLOB`...
本篇将详细介绍如何在IBM DB2环境下进行XML字段的操作,包括从数据库中提取XML数据以及对XML字段进行查询。 首先,我们来理解"IBMDB2XML操作"这一主题。在DB2中,XML字段可以被存储为BLOB(Binary Large Object)...
为了更好地理解和处理这些错误,本文将详细介绍 DB2 数据库中的常见错误代码及其含义,帮助数据库管理员及开发人员快速定位问题并进行有效解决。 #### 二、错误代码分类 DB2 错误信息主要通过 `SQLCODE` 和 `...
在数据库管理与开发过程中,遇到错误是不可避免的,而理解这些错误码的含义则对于快速定位问题、解决问题至关重要。IBM DB2作为一款广泛使用的数据库管理系统,提供了丰富的错误码来帮助开发者诊断各种异常情况。...
通过了解这些错误返回码及其含义,可以帮助开发者更有效地诊断和解决DB2数据库中出现的问题,提高系统的稳定性和性能。在实际应用中,开发者还应该结合具体的SQL语句和上下文环境来综合分析问题的原因,从而采取有效...
- **+33101520**:不允许将NULL值插入不允许NULL的列。 - **+33901569**:DB2版本过低,无法支持某些功能,建议升级。 - **+39401629**:使用模式指示符选择模式。 - **+39501628**:检查模式指示符是否正确设置。 -...