最近数据库从10.2.0.3升级到了10.2.0.5之后,一些对象无法编译通过。查看了这些对象主要表现在之前写法不严格的SQL语法导致了这些package无法成功编译,诸如select查询列中不能使用混淆的列名称等。另外一个比较表现突出的是返回ORA-00932: inconsistent datatypes: expected - got CLOB错误,即不一致的数据类型,获得CLOB数据类型。下面是这个问题的症状及对策。
(Clob的写入和读取-java)更新数据库报错:SQL Error: 1461, SQLState: 72000 ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
Mybatis中jdbcType和javaType的对应关系 JDBC Type Java Type CHAR String VARCHAR String LONGVARCHAR String NUMERIC java.math.BigDecimal DECIMAL java.math.BigDecimal BIT
<!– 映射大对象 –> <!– 若希望精确映射 SQL 类型, 能够使用 sql-type 属性. –> <property name=”content”> <column name=”CONTENT” sql-type=”mediumtext”></column> </property>
当我们使用java.util.Date作为实体的日期类型时(JAVA没有DateTime这个类,Date类能够同时表示日期和时间),java.util.Date实际上是能够表示MySQL的三种字段类型:
数据库列字段都是有类型的,不同的数据库有不同的类型。为了表示这些数据类型,Java源码是采用枚举来定义的:
1、Oracle是大型数据库,而MySQL是中小型数据库。但是MySQL是开源的,但是Oracle是收费的,而且比较贵。
MySQL 数据类型对应 Java 数据类型 类型名称 显示长度 数据库类型 JAVA 类型 JDBC 类型索引 (int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lang.String 1 BLOB L+N BLOB java.lang.byte[] -4 TEXT 65535 VARCHAR java.lang.String -1 INTEGER 4 INTEGER UNSIGNED java.lang.Long 4 TINYINT 3 TINYINT UNSIGNED java.lang.Integer -6 SMALLINT 5 SMALLINT UNSIGNED java.lang.Integer 5 MEDIUMINT 8 MEDIUMINT UNSIGNED java.lang.Integer 4 BIT 1 BIT java.lang.Boolean -7 BIGINT 20 BIGINT UNSIGNED java.math.BigInteger -5 FLOAT 4+8 FLOAT java.lang.Float 7 DOUBLE 22 DOUBLE java.lang.Double 8 DECIMAL 11 DECIMAL java.math.BigDecimal 3 BOOLEAN 1 同 TINYINT ID 11 PK (INTEGER UNSIGNED) java.lang.Long 4 DATE 10 DATE java.sql.Date 91 TIME 8 TIME java.sql.Time 92 DATETIME 19 DATETIME java.sql.Timestamp 93 TIMESTAMP 19 TIMESTAMP java.sql.Timestamp 93 YEAR 4 YEAR java.sql.Date 91 对于 bolb,一般用于对图片的数据库存储,原理是把图片打成二进制,然后进行的一种存储方式,在 java 中对应 byte[]数组。
前面大概介绍了JDBC连接数据库的过程,以及怎么操作数据库,今天给大家分享JDBC怎么处理CLOB和BLOB存储图片的事情,以及JDBC怎么去处理事务。怎么在插入数据的时候生成主键返回值 一、JDBC处理CLOB和BLOB数据 1.1、JDBC处理CLOB(在MySQL中是TEXT) 环境: create table tb_clob_test_1(id int,clob_data text); 前面使用的DButils工具类,用来获取Connection连接和关闭资源。 1)text类型也可以存
Oracle数据库是业界的翘楚,各行各业拥有大量的Oracle DB的DBA,本文尝试通过将Oracle与MySQL数据库的架构、安全、模式对象、数据类型及数据存储进行对比,以方便熟悉Oracle数据库的人可以快速了解MySQL。
MySQL数据类型对应Java数据类型 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lang.String 1 BLOB L+N BLOB java.lang.byte[] -4 TEXT 65535 VARCHAR java.lang.String -1 INTEGER 4 INTEGER UNSIGN
Blob是指二进制大对象(Binary Large Object),而Clob是指大字符对象(Character Large Objec),因此其中Blob是为存储大的二进制数据而设计的,而Clob是为存储大的文本数据而设计的。JDBC的PreparedStatement和ResultSet都提供了相应的方法来支持Blob和Clob操作。下面的代码展示了如何使用JDBC操作LOB: 下面以MySQL数据库为例,创建一个张有三个字段的用户表,包括编号(id)、姓名(name)和照片(photo),建表语句如下:
本周主要介绍JDBC中的两个文本大对象CLOB和BLOB,并根据前面在JDBC中编程的分析,封装了一个连接数据库和关闭流操作的工具类JDBCUtil。最后涉及了一点数据库与程序设计对象之间的对应关系ORM。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106445.html原文链接:https://javaforall.cn
前言 本次带来的是JAVA的JDBC操作,对数据库进行发送SQL语句,以达到对数据库语言的增删改查操作 需要下载驱动类包 MySQL数据库的JDBC驱动包 https://dev.mysql.com
抛开业务逻辑的因素,根据不同的版本、不同平台、不同停机时间需求,有不同的可选路径决定迁移方
本文介绍了mybatis中CLOB、BLOB类型数据的处理和多参数方法映射。主要包括了CLOB数据的存储、BLOB数据的存储、多参数方法映射以及通过mybatis进行多参数查询的方法。
USE [数据库名]; 使用一个数据库 如果出现[数据库名] changed 则表明选择数据库成功
本节介绍的高级数据类型使关系数据库在表列值方面更加灵活。例如,列可以用于存储 BLOB(二进制大对象)值,可以以原始字节形式存储非常大量的数据。列也可以是 CLOB(字符大对象)类型,能够以字符格式存储非常大量的数据。
在Mybatisd的映射文件mapper.xml中,会用jdbcType把java类映射数据库表字段,有关映射关系做个笔记,方便查阅。
所谓大数据,就是大的字节数据,或大的字符数据。标准SQL中提供了如下类型来保存大数据类型:
Java项目涉及到数据库交互,以往常用的是JDBC,现在则有Hibernate、Mybatis等这些持久化支持。
OGG有传统的经典架构,也有最新的微服务,2个都可以远程捕获和应用数据,对数据库服务器是0侵入,而传统的经典架构是纯命令行模式,最新的微服务架构是图形化界面操作,几乎所有操作都可以在界面进行。相关文章可以参考:
LOB (Large Objects) 分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像、声音、二进制文件 在mysql中,只有B
Hibernate估计大家已经用过很多年了吧,好多同学说用过Hibernate,不需要你来讲,但再仔细想想,你能告诉我Hibernate是什么吗? 今天带大家重新认识一下你认识的Hibernate。
//取CLOB中的内容(不包含图片) public String query(String strQuery) throws SQLException{ if (con==null || con.isClosed()) { pool = ConnectionPool.getInstance(); con = pool.getConnection(); } Statement st = con.createStatement(); ResultSet rs = st.execu
con = cx_Oracle.connect("pythondemo","welcome","192.168.188.11:1521/std1")
随着MySQL数据库的应用越来越广泛,DB2向MySQL数据库的迁移需求也越来越多。进行数据库之间迁移的时候,首先遇到的并且也是最基本最重要的就是两种数据库数据类型之间的转换。 下面结合中国证券等级结算深圳分公司开源数据库研究测试项目的DB2数据库向MySQL数据库迁移项目,说明两种数据库数据类型的差异以及迁移过程中的一些注意事项。 无论是DB2数据库,还是MySQL数据库,都要在创建数据库表时为其中的每一列定义一个数据类型,用于限定该列取值范围。DB2数据库支持内置的数据类型(built-in)和用户自定
Druid的坑 当查询数据库的Clob转换为Oracle Clob类型的时候。 java.lang.ClassCastException: com.alibaba.druid.proxy.jdbc.ClobProxyImpl cannot be cast to oracle.sql.CLOB 问题原因 ClobProxyImpl不能转换为Oracle的Clob字段,这也是醉了。 原因是Druid为Clob字段增加了代理类:com.alibaba.druid.proxy.jdbc.ClobProxyImp
ORA-00904: "wm_concat":invalid identifier错误如何解决?
墨墨导读:世界上没有不存在 Bug 的软件,Bug 总是在变化中,层出不穷。Oracle 19c 中,一个有趣的 BUG 在国外的微博上引起热议。
因为之前都是用mysql的,项目用oracle,第一次用oracle写function,还行踩了不少小坑。
1、方法1 流处理 if (type.equalsIgnoreCase("CLOB")) { Clob clob=resultSet.getClob(columnIndex); String result=clob2String(clob); System.out.println("流处理读取CLOB:\n"+result); } 其中Clob 类型转换为String的自定义方法如下 private Stri
做项目的时候遇到一个报错:ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小。查找原因发现是某个字段在数据库中是clob类型。然后sql语句进行查询的时候,对该字段进行了to_char操作。由于varchar类型最大长度为4000,而clob中的内容长度高于4000。于是产生这样的问题。针对这个问题,结合自己的测试,想了以下三种解决方法,在此进行记录。
判断一个字符型字段中出现某个字符超过3次的数据行,如果为了简单达到目的,可以直接使用Like来做, SQL> select content from clob_test where content like '%is%is%is%'; CONTENT -------------------------------------------------------------------------------- this is a test,and it is very useful 但是可能在实际应用中,
在需要存储较长字符串到数据库中时往往需要使用一些特殊类型的字段,在Oracle中即blob和clob字段,一般而言:Clob字段存储字符信息,比如较长的文字、评论,Blob字段存储字节信息,比如图像的base64编码。
SQL 类型 CLOB 在 JavaTM 编程语言中的映射关系。SQL CLOB 是内置类型,它将字符大对象 (Character Large Object) 存储为数据库表某一行中的一个列值。默认情况下,驱动程序使用 SQL locator(CLOB) 实现 Clob 对象,这意味着 CLOB 对象包含一个指向 SQL CLOB 数据的逻辑指针而不是数据本身。Clob 对象在它被创建的事务处理期间有效。
Android工厂模式源码分析 本文对Android源码中所涉及到的工厂模式进行分析(源码不会涉及的具体的细节,具体细节读者请另查相关阅资料),最后再给出安卓中对工厂模式的应用场景案例。工厂模式总共三种:简单工厂、工厂方法、抽象工厂。 友情参考链接: 1、Android中简单工厂模式的体现 1.1、Fragment的创建 我们知道,Fragment之间传递数据有一种建议通过setArguments方法: 使用静态工厂方法,将外部传入的参数可以通过Fragment.setArgument保存在它自己身上,这样
在Oracle中,一般使用 integer、 int或者 number(N),MySQL 也支持 integer 和 int,但不支持 number 或 number(N) 的类型。
在hibernate中,通过sql语句查询带clob字段的记录,查出来的结果集是List<HashMap<String,Object>>类型,在调用jackson的接口转为json字符串的时候,会报异常,为了解决该问题,尝试在转json之前,先将clob字段找出,然后手动转成string。但是在找出clob字段的过程中,发现List<HashMap<String,Object>>中,clob字段的类型尽然不是Clob,而是一种类似$+数字的东东,原因是hibernate使用了自己的实例代理了该字段,获取真实实例的方法如下:
1.PreparedStatement对象 PreparedStatement对象继承Statement对象,它比Statement对象更强大,使用起来更简单 Statement对象编译SQL语句时,如果SQL语句有变量,就需要使用分隔符来隔开,如果变量非常多,就会使SQL变得非常复杂。PreparedStatement可以使用占位符,简化sql的编写 Statement会频繁编译SQL。PreparedStatement可对SQL进行预编译,提高效率,预编译的SQL存储在PreparedStatement
PreparedStatement对象继承Statement对象,它比Statement对象更强大,使用起来更简单
领取专属 10元无门槛券
手把手带您无忧上云