今天发现JDBC的一个怪问题。
同样的sql,在mysql客户端中执行只要0.6、7秒,但是在JDBC中执行却要十二三分钟!这差距也太大了!而且只是其中一张表如此,查看表结构,很正常,没有索引,连主键都没有,就只有字段,字段类型也没有BLOB、CLOB之类的大数据类型,和其他表相比,字段数量也差不错。那就奇怪了,虽说JDBC是要慢些,但是不至于差别几百倍吧。再对比sql,唯一不同的就是这个慢的sql中使用了大量的convert函数,难道是这个原因?把函数去掉,果然速度提升起来了,和其他表一样快了!由于插入该表需要把中文改成GBK编码,因而使用了大量的CONVERT函数,而且数据量上万,导致使用JDBC执行超级慢。至于为何如此,那就不太清楚原因了,后面再研究下,或者有高手指点下就更好。
那怎么解决这个问题呢?很简单,在执行sql的preparedStatement中有个设置编码的方法:preparedStatement.setBytes,把占位符的数据用getBytes(Charset)转换编码后设进去即可,如:
preparedStatement.setBytes(1, valeue.getBytes(Charset.forName("GBK"))); //其中1为对应的占位符位置
分享到:
相关推荐
### JDBC连接SQL Server 2008问题解析与解决方案 #### 一、SQL Server JDBC连接问题概述 在尝试使用Java Database Connectivity (JDBC)来连接SQL Server 2000/2005/2008时,可能会遇到各种连接失败的问题。这些...
3. 执行SQL语句:创建Statement或PreparedStatement对象,然后调用其executeQuery()或executeUpdate()方法。 4. 处理结果:对于查询结果,可以使用ResultSet对象遍历数据;对于更新操作,可以获取影响行数。 5. 关闭...
- **jdbc**:JDBC是Java编程语言与各种数据库之间通信的标准接口,它允许Java程序连接到数据库,执行SQL查询,更新数据等。本工具显然与JDBC的使用紧密相关,可能是通过监听或拦截JDBC的数据库调用来获取SQL执行信息...
这两个文件是Java应用程序连接到SQL Server 2000的桥梁,它们允许Java代码通过标准的JDBC接口执行SQL查询,插入数据,更新和删除记录。 首先,让我们了解JDBC。JDBC是Java平台的一个标准接口,由Sun Microsystems...
### 使用Java通过JDBC连接SQL ...此外,还可以利用JDBC进行更复杂的数据操作,如执行SQL语句、获取查询结果集等,从而满足不同的业务需求。希望本文能帮助大家更好地掌握这一技能,并在未来的工作和学习中加以应用。
此异常通常发生在使用JDBC驱动连接SQL Server数据库并尝试执行某些操作(如分页)时。具体而言,当使用`setFirstResult()`和`setMaxResults()`方法对查询结果集进行限制时,如果结果集被标记为只进(forward-only)...
它们提供了诸如建立连接、执行SQL查询、处理结果集等功能。具体来说,以下是一些关键的API和概念: 1. `java.sql.DriverManager`: 这是JDBC的核心类,用于注册和获取数据库驱动,以及建立到数据库的连接。 2. `...
JDBC提供了一组接口和类,使得Java开发者能够执行SQL语句、处理结果集并管理数据库连接。在连接SQL Server 2000时,我们需要引入特定的JDBC驱动,对于SQL Server 2000,通常是Microsoft的JDBC驱动,也称为"mssql-...
创建`Statement`对象用于执行SQL语句,如查询、插入、更新或删除数据。以下是如何执行一个简单的SELECT查询: ```java Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * ...
通过JDBC,我们可以执行SQL语句、处理结果集以及管理数据库连接。 2. **获取JDBC驱动**: 首先,你需要下载适用于SQL Server 2000的JDBC驱动,通常称为JDBC-ODBC桥接驱动。这个驱动允许Java应用程序通过ODBC(Open...
当我们执行这个方法时,Log4jdbc 将打印出完整的 SQL 语句,包括参数 replacement: ``` DEBUG [main] JDBC - { conn:100, pstmt:102, sql:SELECT * FROM users WHERE name = ?, params:['John Doe'] } ``` 从上面的...
描述中的"NULL"没有提供额外的信息,但通常在处理此类问题时,我们可能需要了解如何下载和配置SQL Server 2005的JDBC驱动,以及如何编写Java代码来执行数据库操作。 **JDBC简介** JDBC是Java平台的一个标准接口,...
这篇博客文章的标题"打印JdbcTemplate执行sql"主要涉及如何在使用`JdbcTemplate`时,追踪并打印出执行的SQL语句,这对于调试和性能分析非常有帮助。接下来,我们将深入探讨`JdbcTemplate`的工作原理以及如何实现SQL...
在Java编程环境中,JDBC(Java ...总之,使用JDBC连接SQL Server 2000数据库涉及下载驱动包、配置类路径、加载驱动、建立连接和执行SQL操作等一系列步骤。了解这些知识点有助于编写出高效、安全的Java数据库应用。
这两个版本的驱动都包含了必要的类和接口,允许Java应用程序执行SQL查询、处理结果集、事务管理和连接管理等任务。 描述中提到"sqlserver数据库,Driver驱动jar包,最新官方原版",意味着这些驱动是由Microsoft官方...
它由Sun Microsystems开发并成为Java平台的一部分,允许Java应用程序通过Java API来执行SQL语句,从而实现对数据库的操作,比如查询、插入、更新和删除数据。 在本例中,我们看到如何使用JDBC与SQL Server 2000...
4. **执行SQL语句**:创建Statement或PreparedStatement对象,编写SQL语句,并调用其`executeQuery()`或`executeUpdate()`方法。 5. **处理结果**:如果你执行的是查询,可以通过ResultSet对象获取结果。如果是更新...
通过上述步骤,你可以使用JDBC成功连接到SQL Server 2000数据库,并执行SQL查询。在实际项目中,可能还需要处理事务、错误处理以及优化性能等方面的问题。学习JDBC不仅是理解数据库连接的基础,也是提升Java应用程序...
这个驱动程序让Java开发者能够使用标准的JDBC API来执行SQL查询、事务管理和数据操作。以下是关于SQLJDBC_4.0驱动的详细知识点: 1. JDBC接口:JDBC(Java Database Connectivity)是Java平台的标准API,允许Java...
这个驱动程序使得Java应用程序能够与MySQL数据库进行交互,执行SQL查询、事务处理等操作。JDBC(Java Database Connectivity)是Java平台中的一种标准API,它允许Java程序通过编写Java代码来访问各种类型的数据库。...