从数据库中读取写入大文本

共有三种方法

  1.使用流读取写入;

  2.将数据作为一个大文本对象返回;

  3.使用getString()获取。(将数据放入内存中,若数据过大,则内存容易崩溃) 

 

 文本文件--》字符流

1.写入,使用流:

  

    public void insert() throws SQLException, FileNotFoundException{
      Connection conn = null;
      PreparedStatement ps = null;
      ResultSet rs = null;
      try{
        conn = JdbcUtils.getConnection();     //JdbcUtils是一个获取数据库连接的工具类,下面另有一个关闭链接的工具类
        String sql = "insert into lobb(id,resume) values(?,?)";
        ps = conn.prepareStatement(sql);
        ps.setString(1, "001");
        File file = new File("src/1.txt");
        FileReader reader = new FileReader(file);
        ps.setCharacterStream(2, reader,(int)file.length());
        int num = ps.executeUpdate();
        if(num > 0){
          System.out.println("插入成功");
        }
      }finally{
        JdbcUtils.closeAll(conn, ps, rs);
      }
    }

2.读取,使用流:

      

    public void read() throws SQLException, IOException{
      Connection conn = null;
      PreparedStatement ps = null;
      ResultSet rs = null;
      try{
        conn = JdbcUtils.getConnection();
        String sql = "select * from lobb";
        ps = conn.prepareStatement(sql);
        rs = ps.executeQuery();
        if(rs.next()){
          rs.getString("id");
          Reader reader = rs.getCharacterStream("resume");
          FileWriter writer = new FileWriter("d://1.txt");
          try{
            int len = 0;
            char buffer[] = new char[1024];
            while((len = reader.read(buffer)) > 0){
            writer.write(buffer, 0, len);
          }
        }finally{
          if(reader != null){
            reader.close();
        }
        writer.close();
      }
      }
      }finally{
      JdbcUtils.closeAll(conn, ps, rs);
      }
    }

 

影音图片--》字节流

  

 1 public void insert() throws SQLException, IOException{
 2             Connection conn = null;
 3             PreparedStatement ps = null;
 4             ResultSet rs = null;
 5             File file = new File("src/1.jpg");
 6             FileInputStream in = new FileInputStream(file);
 7             try{
 8                 conn = JdbcUtils.getConnection();
 9                 String sql = "insert into lobbb(id,image) values(?,?)";
10                 ps = conn.prepareStatement(sql);
11                 ps.setString(1, "001");
12                 ps.setBinaryStream(2, in, (int)file.length());
13                 ps.executeUpdate();
14             }finally{
15                 JdbcUtils.closeAll(conn, ps, rs);
16                 in.close();
17             }
18         }
19         @Test
20   public void read() throws SQLException, IOException{
21             Connection conn = null;
22             PreparedStatement ps = null;
23             ResultSet rs = null;
24             try{
25                 conn = JdbcUtils.getConnection();
26                 String sql = "select image from lobbb where id = ?";
27                 ps = conn.prepareStatement(sql);
28                 ps.setString(1, "001");
29                 rs = ps.executeQuery();
30                 if(rs.next()){
31                     InputStream is = rs.getBinaryStream("image");
32                     File file = new File("d://1.jpg");
33                     OutputStream out = new FileOutputStream(file);
34                     try{
35                         int len = 0;
36                         byte buffer[] = new byte[1024];
37                         while((len = is.read(buffer)) > 0){
38                             out.write(buffer, 0, len);
39                         }
40                     }finally{
41                         if(is != null){
42                             is.close();
43                         }
44                         out.close();
45                     }
46                 }
47             }finally{
48                 JdbcUtils.closeAll(conn, ps, rs);
49             }
50         }

 

 

转载于:https://www.cnblogs.com/sandaoliu/p/3730636.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的任务,需要分步骤进行实现。我将会为您提供代码实现的大致思路和关键步骤,希望能够帮助到您。 1. 读取文本文件 使用Java的File和FileReader类可以轻松读取文本文件。以下是一个读取文本文件的示例代码: ```java File file = new File("filename.txt"); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) { // 处理每一行数据 } br.close(); fr.close(); ``` 2. 将数据写入DefaultTableModel 使用Java的DefaultTableModel类可以轻松创建一个表格模型,并将数据添加到其。以下是一个将数据添加到DefaultTableModel的示例代码: ```java DefaultTableModel model = new DefaultTableModel(); model.addColumn("列1"); model.addColumn("列2"); // 将数据逐行添加到表格模型 while ((line = br.readLine()) != null) { String[] rowData = line.split(","); model.addRow(rowData); } ``` 3. 将数据写入数据库 使用Java的JDBC API可以轻松将数据写入数据库。以下是一个将数据写入MySQL数据库的示例代码: ```java // 建立数据库连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); // 创建PreparedStatement对象 PreparedStatement pstmt = conn.prepareStatement("INSERT INTO mytable (col1, col2) VALUES (?, ?)"); // 逐行将数据写入数据库 for (int i = 0; i < model.getRowCount(); i++) { pstmt.setString(1, model.getValueAt(i, 0).toString()); pstmt.setString(2, model.getValueAt(i, 1).toString()); pstmt.executeUpdate(); } pstmt.close(); conn.close(); ``` 以上代码仅供参考,您需要根据实际情况进行修改。同时,为了保证代码的可读性和可维护性,建议将不同功能的代码封装在不同的方法,并添加必要的异常处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值