`
陈静静2014
  • 浏览: 41828 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

oracle的JDBC使用preparedStatement处理char类型字段的问题 2006-12-28 22:32:11

阅读更多
对于oracle的JDBC使用preparedStatement处理char类型字段的问题
参考转载:http://blog.chinaunix.net/uid-276853-id-366493.html
create table test(name char(7));内有N条值为hello的记录
实验:
第一种:不用占位符,
java.sql.PreparedStatement ps = connection().prepareStatement("select * from test where name='hello'");
java.sql.ResultSet rs = ps.executeQuery();
记录集rs有数据;

第二种:使用占位符,
java.sql.PreparedStatement ps = connection().prepareStatement("select * from test where name=?");
ps.setString(1,"hello");
java.sql.ResultSet rs = ps.executeQuery();
记录集rs中无任何数据。

将字段类型改为varchar时以上两条jdbc sql均无任何问题。因此,不要再费劲了,至于产生此问题的详细原因:与oracle的jdbc驱动有关,试了classes12.jar和ojdbc.jar,也试过了oci驱动,均错误依旧。

解决办法:可以利用cast(value,类型(length)) 转换,

如上可以:ps.setString(1,cast("hello",char(7)));这样可以解决问题。

注:char转成varchar时要用trim去掉占位的空格。

分享到:
评论

相关推荐

    解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    "解决mybatis使用char类型字段查询oracle数据库时结果返回null问题" 在使用mybatis框架对Oracle数据库进行查询操作时,如果使用char类型字段作为查询条件,可能会出现结果返回null的问题。这种情况下,需要对char...

    java面试知识

    - **Java 8之前**:使用Date类配合SimpleDateFormat进行转换。 - **Java 8及以后**:推荐使用java.time包下的类,如LocalDateTime、Instant等。 ##### 阶乘 - **定义**:一个正整数n的阶乘(n!)是从1乘到n的所有...

    Oracle函数_JDBC常用写法

    在`oracle日期函数集锦.txt`中,我们可能会看到更多关于日期处理的函数,比如`EXTRACT`用于提取日期或时间字段,`NEXT_DAY`找到下一个特定星期的日期,`LAST_DAY`返回给定日期所在月份的最后一天。 接着,`JDBC常用...

    自整理Java关于基础和框架的面试题

    - 使用`PreparedStatement`的`addBatch()`和`executeBatch()`方法批量处理数据。 ##### Oracle分页 - 使用`ROWNUM`关键字进行分页。 ##### Oracle的基本数据类型 - NUMBER、VARCHAR2、DATE等。 ##### id、rowid、...

    Java全阶段综合笔试面试题(含答案).docx

    39. **JDBC为什么要使用PreparedStatement而不是Statement** - `PreparedStatement`可以预编译SQL语句,提高执行效率。 - 可以防止SQL注入攻击。 40. **设计模式** - **策略模式**: 定义一系列算法,把它们一个...

    MySQL安装和使用

    - **表结构和字段类型**:Oracle使用了诸如NUMBER、VARCHAR2、CHAR、DATE等字段类型,而MySQL的字段类型包括int、long、double、float、varchar、char等。 - **表引擎**:MySQL的表可以采用不同的存储引擎,如...

    java学习笔记

    - 封装:使用类和对象的概念隐藏实现细节。 - 继承:通过extends关键字实现继承,支持单继承但可以通过接口实现多重继承。 - 多态:方法重载(overloading)和方法覆盖(overriding)。 4. **集合框架**: - List、...

    JDBC 书籍 学习

    本篇文章将围绕 Oracle JDBC 驱动的内存管理进行深入探讨,旨在帮助读者理解 Oracle JDBC 在不同版本中的内存管理机制,并提供一些优化内存使用的实用技巧。 #### 二、Oracle JDBC 内存管理概述 ##### 2.1 早期版本...

    JAVA+ORALCE面试题汇总

    ### JAVA+ORACLE面试题汇总知识点解析 #### 1. Overload、Override与Overloaded的区别是什么? - **Overload(重载)**:在同一个类中可以定义多个方法,只要它们的方法名相同而参数列表不同即可。参数列表的不同...

    Java jdbc 范例

    Java JDBC(Java Database ...综上所述,本案例展示了如何使用Java JDBC连接Oracle数据库,创建数据库连接,封装数据实体以及初步构建用户界面。要使这个案例完整运行,还需要补充业务逻辑和用户界面的交互代码。

    JDBC连接实现简单学生管理系统(附数据库).zip

    - 加载驱动:使用`Class.forName()`方法加载数据库驱动。 - 创建连接:通过`DriverManager.getConnection()`方法,传入数据库URL、用户名和密码来建立连接。 - 获取Statement或PreparedStatement对象:根据是否...

    Java复习资料.zip

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司)于1995年发布。它以其“一次编写,到处运行”的特性而闻名,因为Java代码可以跨平台运行,只需在不同的操作系统上安装Java虚拟机...

    java面试题

    - **JavaScript AJAX调用**:使用JavaScript发起异步请求,获取并处理服务器响应的数据。 #### 10. 事务处理 事务是一组操作序列,这些操作要么全部成功,要么全部失败。在Java中,可以通过`TransactionManager`来...

    Java基础知识复习资料.rar

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司)于1995年发布。它以其“一次编写,到处运行”的特性而闻名,因为Java编写的程序可以在任何支持Java虚拟机(JVM)的平台上运行。这份...

    java登陆系统——用oracle数据库实现.docx

    - **SQL注入防护**:使用预编译语句(`PreparedStatement`)代替字符串拼接,防止SQL注入攻击。 - **异常处理**:合理处理异常,避免敏感信息泄露。 ### 总结 通过以上分析,我们了解到该文档主要介绍了如何使用...

    某外企java笔试题

    1. 选择题:在Java编程中,如果尝试使用一个`char`类型的变量作为参数调用方法,而该方法没有对应`char`类型的重载版本,编译器会报错。这涉及到Java的类型匹配规则和方法重载。 2. 数据库连接与安全:为避免SQL...

    专题资料(2021-2022年)JDBC讲课流程.doc

    首先,需要加载数据库驱动,这通常通过`Class.forName()`方法完成,例如加载Oracle数据库的驱动`oracle.jdbc.driver.OracleDriver`。接着,创建数据库连接对象,通过`DriverManager.getConnection()`方法,提供...

    java存取oracle中的COLB类型数据.pdf

    Java 存取 Oracle 中的 CLOB 类型数据 Java 存取 Oracle 中的 CLOB 类型数据是 Java 开发中的一项重要任务。CLOB(Character Large OBject)是一种大型字符对象,用于存储大型文本数据,最大可存储 4GB 数据。在 ...

    ORACLE表自动按月分区步骤

    在Oracle数据库中,为了优化大型数据表的查询性能和管理效率,可以采用分区技术。分区是一种将大表逻辑上划分为较小、更易管理的部分的方法。对于时间序列数据,如交易记录、日志数据等,按月分区尤其常见,因为这...

Global site tag (gtag.js) - Google Analytics