一、异常情况:
有了一定Java编程经验之后,一般都使用PreparedStatement代替Statement。
但实际开发中对数据库进行操作时,字段遇到大数据并且该字段为非BLOB,CLOB的类型时,若采用PreparedStatement方法setString方法时会如下异常: java.sql.SQLException: 数据大小超出此类型的最大值
实际数据库定义字段长度为:4000,而包装的数据内容长度只有1000左右
二、分析原因:
1、驱动程序在把SQL语句发给数据库前,PreparedStatement对字符串进行预处理并进行了转义替换;
2、字符集原因。
三、解决办法:
通过阅读PreparedStatement文档,setCharacterStream方法可以解决这个问题:
stmt.setCharacterStream(1,
new InputStreamReader(String内容, String内容.length());
四、案例总结:
JDBC在转换过程中对字符串的长度做了限制。这个限制和数据库中字段的实际长度没有关系。而setCharacterStream()方法可以逃过字符转换限制,也就成为了解决此问题的方案之一。JDBC对转换字符长度的限制是为了转换过程中的数据扩展。根据实际测试结果,在ZHS16GBK字符集和thin驱动下,2000-4000长度的varchar字段都只能插入1333个字节(约666个汉字)。
故解决PreparedStatement的setString中字符串长度问题可以有两种办法:
1、使用setCharacterStream()方法;
2、使用OCI驱动连接Oracle数据库。
分享到:
相关推荐
以上策略并非互相排斥,可以根据实际情况组合使用,以便更有效地解决MySQL数据库导入超出默认大小和执行时间的问题。在进行任何调整前,记得备份数据,以防意外情况发生。同时,对服务器性能的监控也非常重要,以免...
SQL_Server_数据类型详解 SQL Server 数据类型是指在 SQL Server 中存储数据的...* image 型的数据也是可变长度的二进制数据,其最大存储大小为 2GB。image 型的数据类型主要用于存储图像、音频和视频等多媒体数据。
然而,常规的数据类型如int或long long可能会在计算大阶乘值时溢出,因为它们的最大值有限。对于超出这些类型范围的阶乘值,我们需要采用特殊的算法或者数据结构来处理。以下是一些处理大数阶乘的方法: 1. **大数...
- 也可以使用优先队列(堆)或某些高级数据结构来更高效地找到最大值,但这超出了删除最大值的基本操作。 3. **删除最大值**: - 对于静态数组,删除操作通常是不可行的,因为它们的大小是固定的。在这种情况下,...
通过这个文件,我们可以期待看到如何在MATLAB中定义滤波窗口大小,如何遍历输入数据,并如何找到每个窗口内的最大值以实现滤波的过程。 在实际应用中,最大值滤波器的实现可能包括以下步骤: 1. 定义滤波器窗口大小...
在本项目中,我们主要探讨的是使用C语言来实现一个程序,该程序能接收用户输入的矩阵数据,并找出其中的最大值。这个任务是C语言学习过程中常见的一种练习,旨在提高学生对数组操作、循环控制以及数值比较的理解。...
本文将深入探讨整型变量的大小、最大值与最小值的概念及其在实际编程中的应用。 ### 一、整型变量的基础概念 整型变量是一种用于存储整数的变量类型。它有两种形式:无符号整型(unsigned int)和有符号整型...
在编程领域,找最大值是一项基础且常见的任务,尤其对于初学者来说,它是理解数据处理和算法的一个很好的起点。在本教程中,我们将探讨如何在C++编程语言中找到一个整数数组中的最大值。我们将从基本的遍历算法开始...
此错误表明数据库在尝试为某个对象(如表或索引)分配额外的空间时遇到了限制,具体来说是MINEXTENTS值达到了最大值7。这个问题通常出现在表空间管理策略为自动扩展(autoextend)的场景下。 #### Oracle 表空间与段...
在SQL Server中,数据类型是定义列或变量可以存储何种类型数据的关键元素。理解各种数据类型对于数据库设计和开发至关重要,因为它们决定了数据的精度、范围以及存储需求。以下是MSSQL SERVER中常用的一些数据类型的...
只有INTEGER PRIMARY KEY列才能使用AUTOINCREMENT,而且每次插入新记录时,会找到当前最大值加1作为新值。如果表中有多个INTEGER PRIMARY KEY,只有一个能使用AUTOINCREMENT特性。 7. 动态类型系统 SQLite3使用...
如果输入值超出定义的位数,Oracle会截取超出部分。例如,`number(3,0)`,输入575.316,实际保存的是575。 4. **Date**: 用于存储日期和时间,范围从公元前4712年到公元4712年,包括小时、分钟和秒。默认格式为DD-...
- 例如,`NUMBER(5,2)` 表示该字段可以存储的最大值是 99,999。 - **应用场景**: 适用于各种数值型数据,如金额、数量等。 #### 四、日期时间数据类型 ##### DATE - **定义**: 存储从公元前 4712 年 1 月 1 日到...
这主要是因为phpExcel在内存中保存单元格信息,当数据量大时,内存消耗超过PHP配置的最大值,导致错误。下面将详细探讨如何解决phpExcel导出大量数据时出现的内存溢出问题。 首先,需要了解phpExcel在内存使用上的...
* 最大连接数:已配置连接的最大值 * 最大锁数:每个服务器的最大锁数 * 最大每个连接的锁数:每个服务器的最大锁数 存储过程限制 * 最大嵌套存储过程级别数:63 * 最大嵌套子查询个数:32 * 最大嵌套触发器层数:...
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
今天设置端口号范围0-65535时使用了QIntValidator发现没生效,...发现是,qt固有bug,重写QIntValidator类可以解决 所以根据想要的效果重写了一下 效果和正则表达式类似,输入不在范围内的数字直接维持原状,不能输入
这些取值范围决定了不同数值类型可以表示的最大和最小值,开发者需要根据实际需求选择合适的数据类型。 ##### 2. 数据类型的转化 Java支持不同类型之间的数据转换,分为自动类型转换和强制类型转换两种情况。 - *...
在使用PHPMyAdmin进行数据库迁移或恢复过程中,可能会遇到一个常见的问题:当尝试导入的数据库文件大小超过PHP的默认限制时,系统会返回错误提示,表明文件大小超出PHP的允许范围。这通常是因为PHP默认设置中对上传...
滑动窗口最大值问题通常要求我们在一个数组中找到一个固定大小的窗口,并在这个窗口内寻找最大值,同时窗口会不断地向右移动。这个问题的关键在于如何快速地更新窗口内的最大值,而不需要遍历整个窗口。一种常见的...