mysql数据库---批处理与大文本/图片类型

要在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();
        }
    }
}

先说说批处理操作类

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();
        }
    }
}
}

再看大文本或图片类型的存储

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这些都是实现类,用他们肯定不合适。

时间: 2024-08-05 08:21:46

mysql数据库---批处理与大文本/图片类型的相关文章

MySQL数据库如何解决大数据量存储问题

利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开关量历史数据表,这两张表字段设计的很简单(OrderNo,Value,DataTime).基本上每张表每天可以增加几千万条数据,我想问如何存储数据才能不影响检索速度呢?需不需要换oracle数据库呢?因为我是数据库方面的新手,希望可以说的详细一点,万分感谢!!?-0-#暂时可以先考虑用infobri

MySQL数据库8(七)列类型

列类型 整数类型 tinyint 迷你整型,系统采用一个字节来保存的整型,一个字节=8byte,最大能表示的数据是0-255. smallint 小整型,系统采用两个字节来保存的整型,能表示0-65535之间的整型 mediumint 中整型,采用三个字节来保存数据 int 整型,(标准整型),采用四个字节来保存数据. bigint 大整型,采用八个字节来保存数据. 实际应用中,应该根据对应的数据范围来选定对应的整型类型,通常使用的比较多的是tinyint和int. 无符号标识设定 无符号,表示

利用MySQL数据库如何解决大数据量存储问题?

提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如何做,对于一个存储设计,必须考虑业务特点,收集的信息如下:1.数据的容量:1-3年内会大概多少条数据,每条数据大概多少字节: 2.数据项:是否有大字段,那些字段的值是否经常被更新: 3.数据查询SQL条件:哪些数据项的列名称经常出现在WHERE.GROUP BY.ORDER BY子句中等: 4.数据更新类SQL条件:有多少列经常出现UPDATE或DELETE 的WHERE子句中: 5.SQL量的统计比,

Mysql数据库性能优化大总结

目录:[TOC] 影响数据库服务器性能的因素 超高的QPS(每秒钟处理的查询量)和TPS导致SQL处理效率下降. 大量的并发导致的数据库连接数被占满和超高的CPU占用率导致资源耗尽服务器宕机. 磁盘IO性能瓶颈导致数据传输效率下降,计划任务导致磁盘IO下降. 网卡IO性能瓶颈,要减少从服务器数量,缓存要分级,避免使用 select * 这样的查询. 大表导致的问题: 不同数据库引擎对于大表的概念是不一样的. InnoDB存储引擎没有明确的大表概念. 实际使用中发现当一个数据表中的数据超过千万行的

asp数据库编程:Oracle大文本在ASP中存取问题的解决

在我开发BS结构程序中,由于经常需要在ORACLE中处理一些容量较大的文本数据,所以经过反复测试终于用ASP成功解决了大文本数据在ORACLE下存取问题. 一.运行环境: 1.Microsoft Windows 2000 Server + IIS 5.02.Oracle8i中文标准版 二.建立数据表: CREATE TABLE SYSTEM.TEST(BLOB LONG,ID NUMBER)/ 三.源程序:1.数据存入程序:test.asp <%'表单提交处理部分{上海治疗阳痿医院}'-----

向mysql数据库中插入大二进制文件和大文本

@Test public void run() throws ClassNotFoundException, SQLException, FileNotFoundException { try { Connection conn = jdbcUtils. getConnection(); PreparedStatement pst = conn .prepareStatement( "insert into myblob values(null,?)"); File file = ne

Mysql数据库表关于几个int类型的字符长度

Data type Range Storage bigint -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807) 8 Bytes int -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647) 4 Bytes smallint -2^15 (-32,768) to 2^15-1 (32,767) 2 Bytes tinyint 0 to 255 1 Byte

使用JDBC处理MySQL大文本和大数据

LOB,Large Objects,是一种用于存储大对象的数据类型,一般LOB又分为BLOB与CLOB.BLOB通常用于存储二进制数据,比如图片.音频.视频等.CLOB通常用于存储大文本,比如小说. MySQL数据库中没有专门的CLOB数据类型,而如果要存储大文本,MySQL采用的是TEXT类型.TEXT类型又有TINYTEXT.TEXT.MEDIUMTEXT和LONGTEXT之分.MySQL中的BLOB类型又可分为TINYBLOB.BLOB.MEDIUMBLOB和LONGBLOB. 使用JDB

sql 批处理、获取自增长、事务、大文本处理

批处理 需要批量执行sql语句! 需求:批量保存信息! 设计: AdminDao Public void save(List<Admin list){ // 目前用这种方式 // 循环 // 保存 (批量保存) } Public void save(Admin admin ){ // 循环 // 保存 } 技术: |-- Statement 批处理相关方法 void addBatch(String sql) 添加批处理 void clearBatch() 清空批处理 int[] executeB