前阵子做的一个lucene全文检索的小例子,里面涉及jdbc的批量更新,在此发布出来,与大家共享。
也是作为自己学习过程的复习和记录。
找个类的主要功能如下:
* 1. 读取包含专业词库的txt文件
* 2. 根据中文分词组件进行切分
* 3. split方法处理,返回字符串数组
* 4. 写出到txt文件输出
* 5. 使用sql批量更新方式插入数据库
*/
/**
*
*/
package net.tuolian.product.utils;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;
import jeasy.analysis.MMAnalyzer;
/**
* @author sean
*
* @since 2009/04/17
* 1. 读取包含专业词库的txt文件
* 2. 根据中文分词组件进行切分
* 3. split方法处理,返回字符串数组
* 4. 写出到txt文件输出
* 5. 使用sql批量更新方式插入数据库
*/
public class JdbcBatchUpdate {
static String sql = "insert into test04 values (?,?)";
Connection conn = null;
PreparedStatement pstmt = null;
/**
* @param args
* @throws SQLException
* @throws ClassNotFoundException
* @throws IOException
* @throws IllegalAccessException
* @throws InstantiationException
*/
public static void main(String[] args) throws SQLException,
ClassNotFoundException, IOException, InstantiationException, IllegalAccessException {
// TODO Auto-generated method stub
JdbcBatchUpdate update = new JdbcBatchUpdate();
update.init();
//读取txt文件
BufferedReader reader = new BufferedReader(new FileReader("keywordsource//output.txt"));
//打开输出文件
BufferedWriter writer = new BufferedWriter(new FileWriter("newoutput.txt"));
String str = null;
StringBuffer sb = new StringBuffer();
while((str= reader.readLine())!=null){
sb.append(str + " ");
}
//中文分词插件,JEAnalysis, 根据" "空格,将sb的字符串进行分词
MMAnalyzer analyzer = new MMAnalyzer();
String msg = analyzer.segment(sb.toString(), " ");
//将字符串更加空格进行分割,返回字符串数组
String[] terms = msg.toString().split(" ");
//输出到txt文件
for(int i=0; i<terms.length;i++){
System.out.println(i + terms[i]);
writer.write(terms[i] + "\r\n");
}
writer.flush();
writer.close();
//执行mysql批量更新到数据库
update.batchUpdate(terms);
}
/**
* 数据库连接初始化
* 1. 加载mysql jar包
* 2. 获得getConnection
* 3. 获得PreparedStatement
* @throws SQLException
* @throws ClassNotFoundException
*/
public void init() throws SQLException, ClassNotFoundException{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/db_advertisement", "root", "root");
conn.setAutoCommit(false);
pstmt = (PreparedStatement) conn
.prepareStatement(sql);
System.out.println(new Date());
}
/**
* 批量更新
* 先加入批量, pstm.addBatch()
* 然后executeBatch(), 批量更新
* conmit(), 更新
* @param terms
* @throws SQLException
*/
public void batchUpdate(String[] terms) throws SQLException{
for (int i = 0; i < terms.length -1; i++) {
//此处注意setInt(1, i), 字段名称和栏目数必须匹配
pstmt.setInt(1, i);
pstmt.setString(2, terms[i]);
pstmt.addBatch();
System.out.println(i);
}
//增加到批量工作任务中
pstmt.executeBatch();
System.out.println(new Date());
//提交执行
conn.commit();
pstmt.close();
conn.close();
}
}
分享到:
相关推荐
本文将深入探讨如何使用JDBC进行批量插入数据,这在处理大量数据时能显著提高性能。 批量插入数据是数据库操作中常见的一种优化策略,特别是在数据分析、数据迁移或大数据处理等场景。传统的单条插入方式可能会导致...
### JDBC批量操作详解:效率与性能的提升策略 在数据库操作中,批量处理是一种常见的优化技术,用于提高数据处理的效率和性能。JDBC(Java Database Connectivity)作为Java应用程序与数据库交互的标准API,提供了...
本篇文章将深入探讨三种不同的JDBC批量插入编程方法,并进行对比分析,以帮助开发者更好地理解和选择适合的批量处理方式。 1. **使用PreparedStatement的addBatch()和executeBatch()** JDBC提供了...
本篇文章将详细介绍如何使用Java实现JDBC批量插入数据,并比较三种常见的JDBC批量插入编程方法。 **方法一:使用PreparedStatement加批量的方法** PreparedStatement是Statement的子接口,允许预编译SQL语句,这...
### JDBC批量操作数据分析与实例 #### 一、引言 在日常软件开发中,数据库操作是必不可少的一部分。其中,批量操作作为一种高效的处理方式被广泛应用于数据处理任务中。本文将通过对一个具体的Java程序示例(使用...
- **解决方案**:强烈建议更新至支持批量更新的新版本 JDBC 驱动,例如使用 SQL Server 2005 的 JDBC 驱动版本 1.2 或更高版本。 - **具体错误**:如果出现错误提示“`SQLServerException: sp_cursoropen/sp_...
这种方式适用于简单的SQL语句,如批量插入或更新。通过`Statement`对象的`addBatch()`方法添加待执行的SQL语句,然后调用`executeBatch()`来一次性执行所有语句。例如: ```java Statement stmt = conn....
在本项目中,我们主要探讨如何使用Java的JDBC(Java Database Connectivity)接口来连接OpenGauss PostgreSQL数据库,实现一个图书管理系统的增删改查功能。OpenGauss是一款开源的关系型数据库管理系统,它与...
在本文中,我们将深入探讨如何使用JSP(JavaServer Pages)、Servlet和JDBC(Java Database Connectivity)来实现MySQL数据库的增、删、改、查操作。这种方法在小型项目中非常常见,但也有其局限性,如代码与SQL语句...
2. **大数据量处理**:在JDBC中,对于大量数据的插入,我们可以使用批量处理(batch processing),如`addBatch()`和`executeBatch()`方法,这样可以显著提升性能,减少与数据库的交互次数。 3. **事务处理**:JDBC...
标题中的“02_传智播客JDBC_编写一个简单的jdbc例子程序”表明这是一个关于Java数据库连接(JDBC)的教程,由传智播客提供,内容可能涉及如何使用JDBC来执行基本的数据库操作。描述和标签与标题一致,暗示这个压缩包...
本文档主要介绍了如何使用Java Web技术,特别是JDBC和JSP,来实现一个简单的员工管理系统。以下是对核心知识点的详细说明: 1. **JDBC(Java Database Connectivity)**:JDBC是Java中用于与关系型数据库进行交互的...
- JDBC 2.0包括了一些重要的增强特性,如支持存储过程、批量更新等。 - 这一时期,JDBC的功能得到了显著增强,使得Java应用程序能够更加高效地处理数据库操作。 - **JDK 1.3+ J2EE - JDBC 2 EE** - JDK 1.3结合...
在"JDBC简单封装类"中,这些步骤可能会被封装到单独的方法里,比如`connect()`用于建立连接,`executeQuery(String sql)`和`executeUpdate(String sql)`分别用于执行查询和更新,`getResultSet()`用于获取结果集,...
本文将重点介绍如何在JMeter中使用JDBC Request来执行多条SQL语句,包括查询与更新操作,并针对不同类型的SQL语句提供最佳实践。 #### 二、JDBC Request概述 JDBC Request是JMeter提供的一个用于执行数据库操作的...
sqljdbc42.jar还支持高级特性,如批量更新、存储过程调用、流处理、以及SQL Server特有的功能如XML列、全文搜索等。同时,它还包含了对SSL加密连接的支持,以确保数据传输的安全性。 值得注意的是,为了保持应用的...
### JDBC详解(基础版本) #### 一、JDBC概述 **1.1 什么是JDBC?...掌握了这些基本操作后,便可以进一步探索更复杂的数据库操作,例如使用`PreparedStatement`处理带参数的SQL语句、批量更新操作等。
它支持预编译的PreparedStatement,可以防止SQL注入攻击,并能处理批量更新操作。 2. **ResultSetHandler**: 这是一组接口和实现,用于将ResultSet中的数据转换为Java对象。例如,`ArrayListHandler`将结果集转换为...
本案例将探讨如何使用JDBC连接MySQL数据库,并通过实际的代码示例讲解整个过程。我们将涉及以下知识点: 1. **JDBC驱动注册**: 在Java中,连接MySQL数据库首先需要加载并注册JDBC驱动。MySQL的JDBC驱动类是`...
- JDBC支持批量处理SQL语句,可以提高性能,例如使用`addBatch()`和`executeBatch()`方法。 - 使用PreparedStatement可以防止SQL注入攻击,并提高查询效率。 7. **事务管理**: - JDBC提供对数据库事务的支持,...