mysql数据库---批处理与大文本/图片类型
来源:互联网 发布:剑三男捏脸数据 编辑:程序博客网 时间:2024/05/17 22:05
要在java对数据库做任何操作,第一件事当然是获取数据库连接,笔者是通过配置文件的形式加载数据库信息的,配置文件名为db.properties,内容如下
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/customermanage
username=root
password=root
ps:properties中的内容均为键值对形式,不需要用到引号
接下来是DBUtil类,获取配置,得到连接
package com.cherry.utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Properties;import java.util.ResourceBundle;public class DBUtils { static String driver; static String url; static String username; static String password; static { try { // Class.forName("com.mysql.jdbc.Driverr"); // DriverManager.getConnection("jdbc:mysql://localhost:3306/customermanage", // "root", "root"); ResourceBundle rb = ResourceBundle.getBundle("db"); driver = rb.getString("driver"); Class.forName(driver); url = rb.getString("url"); username = rb.getString("username"); password = rb.getString("password"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConn() throws SQLException { return DriverManager.getConnection(url, username, password); } public static void releaseRes(ResultSet rs, PreparedStatement ps, Connection conn) throws SQLException { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } }}
先说说批处理操作类,还是和普通的SQL操作一样使用PreparedStatement 类,但会使用到addBatch()方法,笔者假定存入一万条数据,每100条作为一个批次,操作代码如下
package com.cherry.batch;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import com.cherry.utils.DBUtils;public class BatchSQL {public static void main(String[] args) throws SQLException { Connection conn= DBUtils.getConn(); String sql="insert into des value(?,?)"; PreparedStatement ps=conn.prepareStatement(sql); for ( int i=0;i<10000 ;i++) { ps.setString(1, "name"+i); ps.setString(2, "des"+i); ps.addBatch(); if(i%100==0){ ps.executeBatch(); ps.clearBatch(); } }}}
再看大文本或图片类型的存储,和上面一样使用的是PreparedStatement ,用到的方法是setCharacterStream(),要注意类型匹配的问题,文件长度file.length()是long型,而setCharacterStream()的第三个参数可能是int也有可能是long(取决于驱动版本),所以可能出现编译不报错但运行报错的问题,操作代码如下
package com.cherry.batch;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.Reader;import java.sql.Connection;import java.sql.PreparedStatement;import java.util.UUID;import com.cherry.utils.DBUtils;public class TextSQL { public static void main(String[] args) { try { Connection connection = DBUtils.getConn(); String sql = "insert into des values(?,?)"; PreparedStatement ps = connection.prepareStatement(sql); ps.setString(1, UUID.randomUUID().toString()); File file = new File("f://test.txt"); Reader reader = new FileReader(file); //这里不一定要强转,看你的mysql驱动版本,总之不转不行就转个试试 ps.setCharacterStream(2, reader, (int)file.length()); ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } }}
另外,注意导包,这里所有的数据库操作类所导的都是java.sql下的,想想也知道,面向接口编程的Java君,肯定是使用sql包的(普适性),因为mysql/sqlserver/orcale这些都是实现类,用他们肯定不合适。
1 0
- mysql数据库---批处理与大文本/图片类型
- Mysql大文本类型
- 数据库大数据BLOB类型转换文本
- clob 大文本类型与String 互转
- 向mysql数据库中插入大文本
- 批处理操作mysql数据库
- JDBC批处理、事务、自动增长、大文本
- java和mysql数据库大文本和二进制操作
- MySQL备份还原数据库批处理
- 使用批处理备份mysql数据库
- window 批处理备份mysql数据库
- 数据库批处理操作-mysql-sqlite
- 批处理实现mysql数据库备份
- Java与MySql数据库对应类型
- Mysql数据库引擎类型与特性对比
- MySQL数据库中的timestamp类型与时区
- Java与MySql数据库对应类型
- Mysql数据库引擎类型与特性对比
- 设计模式之建造者模式(Builder)
- STL源码笔记(14)—堆和优先级队列(一)
- 第三十四课 二维数组的存储 【项目1-3】
- date获取年月日
- 设计模式之装饰模式
- mysql数据库---批处理与大文本/图片类型
- 服务器基础 tomcat端口被占用问题的解决
- 10815 - Andy's First Dictionary
- HDU2059 多段决策
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- web基础 Web.xml配置详解
- apt-get update与ssh server服务安装
- controller配置汇总
- Android studio使用问题收录