今天遇到这样一个问题:用hibernate进行精确匹配查询的时候,一直出错。把查询参数去掉一个字符,即能顺利通过。刚开始还以为是hibernate在进行sql转换的的时候对匹配字段的参数进行校验,因为实体配置文件中该字段长度声明为10,而查询参数的长度刚好为11。但修改过配置文件以后问题依然存在,看了hibernate并没有去做这些参数的校验,那么问题会不会出现在jdbc上呢?想到这里便顺手些了下测试代码,发现问题确实是出现在JDBC上的。
PreparedStatement prsm = co.prepareStatement("select * from user where name= ?");
prsm.setString(1, name);
prsm.executeQuery();
数据库中name对应的字段长度定义为10,而参数中name的长度为11,这样执行查询的时候就会报类型不对匹配的问题,但是如果这些写
PreparedStatement prsm = co.prepareStatement("select * from user where name= '"+name+"'");
//prsm.setString(1, name);
prsm.executeQuery();
就能顺利通过。下面的亦能通过
PreparedStatement prsm = co.prepareStatement("select * from user where name like ?");
prsm.setString(1, name);
prsm.executeQuery();
(以上只对DB2数据库做了测试,其他的没有测试)
总结:在进行精确匹配查询的时候,一定要注意参数的长度,最好不要超过数据库对该字段的设定长度,如果底层方法包装的是PreparedStatement ,并且用setString进行参数填充的话,那么系统将抛出异样!但是如果是拼装sql,然后在执行,就不存在这样的问题。
分享到:
相关推荐
在使用 JDBC 连接字符串时,需要将数据库驱动程序的 JAR 包添加到 Classpath 中。可以通过设置环境变量 `classpath` 或将 JAR 包拷贝到 `jdk\jre\lib\ext` 目录下来实现。 本文中,我们提供了 Oracle、MySQL、SQL ...
JDBC连接数据库字符串是连接数据库的关键部分,它包含了所有必要的信息,如驱动类、数据库URL、数据库名、主机地址、端口号以及可能的其他参数。 以下是一些主流数据库的JDBC连接字符串示例: 1. **SQL Server ...
在本篇文章中,我们将探讨四种主要的数据库——SQL Server 2000、SQL Server 2005、Oracle以及MySQL,它们对应的JDBC驱动jar包及其连接字符串的构建方法。 首先,我们来看SQL Server 2000的JDBC连接。SQL Server ...
在Java中,JDBC连接字符串是用于建立与特定数据库连接的重要组成部分。以下是九种不同数据库系统使用的JDBC连接字符串及其相关知识: 1. **Microsoft SQL Server 2000**: - 驱动类:`...
### JDBC 数据库常用连接链接字符串 #### 一、概述 在Java开发中,与数据库进行交互是必不可少的一个环节。为了实现这一目标,Java提供了JDBC(Java Database Connectivity)技术,它是一套用于执行SQL语句的Java ...
它由Sun Microsystems(现为Oracle公司)开发,允许Java开发者在应用程序中执行SQL语句,实现对数据库的操作,如查询、更新、插入和删除数据。本压缩包“jdbc各种驱动程序+连接字符串.rar”包含了不同数据库的JDBC...
在Java编程中,JDBC(Java Database Connectivity)是Java平台的标准接口,用于连接各种关系型...以上信息为各种常见数据库的JDBC驱动下载地址及连接字符串的编写方式,希望对开发者在使用Java与数据库交互时有所帮助。
不同的数据库版本可能需要不同的驱动程序,因此在编写代码时应确保使用与目标数据库相匹配的JDBC驱动和连接字符串格式。此外,随着技术的发展,官方和社区驱动都在不断更新,选择最新且支持良好的驱动可以确保应用...
### Oracle JDBC连接字符串详解 在Java开发环境中,与Oracle数据库进行交互时,通常会使用Java Database Connectivity (JDBC)技术来实现。本文将详细介绍如何通过JDBC连接Oracle数据库,并解释连接字符串及相关配置...
以下是对不同数据库的JDBC驱动和连接字符串的详解: 1. MySQL: - 驱动类:`com.mysql.jdbc.Driver` - 连接字符串的基本格式:`jdbc:mysql://[host:port]/[database][?parameters]` - 示例:`jdbc:mysql://...
在Java中使用JDBC连接Oracle数据库时,通常采用的是thin模式。这种方式直接通过JDBC驱动与Oracle数据库进行交互,不需要额外的中间层软件。 **示例代码:** ```java Class.forName("oracle.jdbc.driver.Oracle...
下面列举了一些常见数据库的JDBC连接字符串示例,以及它们各自的参数: #### MySQL数据库 ```java String url = "jdbc:mysql://localhost:3306/databaseName?useSSL=false&serverTimezone=UTC"; ``` - `localhost...
在Java中通过JDBC访问Oracle数据库时,通常采用thin驱动方式。thin驱动是一种纯Java驱动,无需依赖任何非Java代码即可完成与Oracle数据库的交互。 - **加载驱动**:`Class.forName("oracle.jdbc.driver.Oracle...
### JDBC所有数据库连接字符串知识点详解 #### 一、引言 在Java开发中,通过Java Database Connectivity (JDBC)技术可以实现与各种关系型数据库之间的交互。为了方便开发者理解和掌握不同数据库的连接方式,本文将...
以下是对这些数据库的JDBC驱动下载和连接字符串URL的详细说明: 1. **MySQL**: - JDBC驱动下载:可以访问[MySQL官方网站](http://www.mysql.com/products/connector/j/)获取最新版本的JDBC驱动,如`mysql-...
Oracle的连接字符串通常形如:`jdbc:oracle:thin:@<服务器地址>:<端口号>:<服务名>`,或对于TNS名称配置,可以是`jdbc:oracle:thin:@名称>`。 SQL Server是微软提供的一个强大的数据库系统,其JDBC驱动为`...
JDBC-ODBC桥是Java数据库连接(JDBC)中的一种技术,它允许Java应用程序通过JDBC接口访问基于ODBC的数据源。...然而,对于开发和测试环境,尤其是处理旧系统时,JDBC-ODBC桥仍是一个实用的解决方案。
### JDBC常用连接串详解 #### 一、概述 在Java开发中,JDBC(Java Database ...了解这些连接字符串的格式和参数设置对于进行数据库操作至关重要。希望本文能帮助开发者更好地理解和使用JDBC进行数据库连接。
这是因为 Java 在处理字符串时默认按照特定的字符集进行解码,而在本例中,Java 应用期望使用 `ZHS16GBK` 解码,但实际上却按照 `US7ASCII` 编码的数据进行了解码,从而导致乱码现象的发生。 #### 解决方案 为了...