二进制数据:图片3 : 二进制数据JDBC « 数据库JDBC « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 数据库JDBC » 二进制数据JDBC屏幕截图 
二进制数据:图片3
 
/*

MySQL and Java Developer's Guide

Mark Matthews, Jim Cole, Joseph D. Gradecki
Publisher Wiley,
Published February 2003, 
ISBN 0471269239

*/


import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Vector;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class IDlook extends JFrame {

  private JButton getAccountButton, updateAccountButton, insertAccountButton,
      nextButton, previousButton, lastButton, firstButton;

  private JList accountNumberList;

  private JTextField accountIDText, nailFileText, thumbIDText;

  private JTextArea errorText;

  private Connection connection;

  private Statement statement;

  private ResultSet rs;

  private ImageIcon icon = null;

  private ImageIcon iconThumbnail = null;

  JLabel photographLabel;

  public IDlook() {
    try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
    catch (Exception e) {
      System.err.println("Unable to find and load driver");
      System.exit(1);
    }
  }

  private void loadAccounts() {
    Vector v = new Vector();
    try {
      rs = statement.executeQuery("SELECT * FROM thumbnail");

      while (rs.next()) {
        v.addElement(rs.getString("acc_id"));
      }
    catch (SQLException e) {
      displaySQLErrors(e);
    }
    accountNumberList.setListData(v);
  }

  private void buildGUI() {
    Container c = getContentPane();
    c.setLayout(new FlowLayout());

    accountNumberList = new JList();
    loadAccounts();
    accountNumberList.setVisibleRowCount(2);
    JScrollPane accountNumberListScrollPane = new JScrollPane(
        accountNumberList);

    //Do Get Account Button
    getAccountButton = new JButton("Get Account");
    getAccountButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        try {
          rs.beforeFirst();
          while (rs.next()) {
            if (rs.getString("acc_id").equals(
                accountNumberList.getSelectedValue()))
              break;
          }
          if (!rs.isAfterLast()) {
            accountIDText.setText(rs.getString("acc_id"));
            thumbIDText.setText(rs.getString("thumb_id"));

            icon = new ImageIcon(rs.getBytes("pic"));
            createThumbnail();
            photographLabel.setIcon(iconThumbnail);
          }
        catch (SQLException selectException) {
          displaySQLErrors(selectException);
        }
      }
    });

    //Do Update Account Button
    updateAccountButton = new JButton("Update Account");
    updateAccountButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        try {
          byte[] bytes = new byte[50000];
          FileInputStream fs = new FileInputStream(nailFileText
              .getText());
          BufferedInputStream bis = new BufferedInputStream(fs);
          bis.read(bytes);

          rs.updateBytes("thumbnail.pic", bytes);
          rs.updateRow();
          bis.close();

          accountNumberList.removeAll();
          loadAccounts();
        catch (SQLException insertException) {
          displaySQLErrors(insertException);
        catch (Exception generalE) {
          generalE.printStackTrace();
        }
      }
    });

    //Do insert Account Button
    insertAccountButton = new JButton("Insert Account");
    insertAccountButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        try {
          byte[] bytes = new byte[50000];
          FileInputStream fs = new FileInputStream(nailFileText
              .getText());
          BufferedInputStream bis = new BufferedInputStream(fs);
          bis.read(bytes);

          rs.moveToInsertRow();
          rs.updateInt("thumb_id", Integer.parseInt(thumbIDText
              .getText()));
          rs.updateInt("acc_id", Integer.parseInt(accountIDText
              .getText()));
          rs.updateBytes("pic", bytes);
          rs.updateObject("sysobject"null);
          rs.updateTimestamp("ts"new Timestamp(0));
          rs.updateTimestamp("act_ts"new Timestamp(
              new java.util.Date().getTime()));
          rs.insertRow();
          bis.close();

          accountNumberList.removeAll();
          loadAccounts();
        catch (SQLException insertException) {
          displaySQLErrors(insertException);
        catch (Exception generalE) {
          generalE.printStackTrace();
        }
      }
    });

    photographLabel = new JLabel();
    photographLabel.setHorizontalAlignment(JLabel.CENTER);
    photographLabel.setVerticalAlignment(JLabel.CENTER);
    photographLabel.setVerticalTextPosition(JLabel.CENTER);
    photographLabel.setHorizontalTextPosition(JLabel.CENTER);

    JPanel first = new JPanel(new GridLayout(41));
    first.add(accountNumberListScrollPane);
    first.add(getAccountButton);
    first.add(updateAccountButton);
    first.add(insertAccountButton);

    accountIDText = new JTextField(15);
    thumbIDText = new JTextField(15);
    errorText = new JTextArea(515);
    errorText.setEditable(false);

    JPanel second = new JPanel();
    second.setLayout(new GridLayout(21));
    second.add(thumbIDText);
    second.add(accountIDText);

    JPanel third = new JPanel();
    third.add(new JScrollPane(errorText));

    nailFileText = new JTextField(25);

    c.add(first);
    c.add(second);
    c.add(third);
    c.add(nailFileText);
    c.add(photographLabel);

    setSize(500500);
    show();
  }

  public void connectToDB() {
    try {
      connection = DriverManager
          .getConnection("jdbc:mysql://192.168.1.25/identification?user=spider&password=spider");
      statement = connection.createStatement(
          ResultSet.TYPE_SCROLL_INSENSITIVE,
          ResultSet.CONCUR_UPDATABLE);

    catch (SQLException connectException) {
      System.out.println(connectException.getMessage());
      System.out.println(connectException.getSQLState());
      System.out.println(connectException.getErrorCode());
      System.exit(1);
    }
  }

  private void displaySQLErrors(SQLException e) {
    errorText.append("SQLException: " + e.getMessage() "\n");
    errorText.append("SQLState:     " + e.getSQLState() "\n");
    errorText.append("VendorError:  " + e.getErrorCode() "\n");
  }

  private void init() {
    connectToDB();
  }

  private void createThumbnail() {
    int maxDim = 350;
    try {
      Image inImage = icon.getImage();

      double scale = (doublemaxDim / (doubleinImage.getHeight(null);
      if (inImage.getWidth(null> inImage.getHeight(null)) {
        scale = (doublemaxDim / (doubleinImage.getWidth(null);
      }

      int scaledW = (int) (scale * inImage.getWidth(null));
      int scaledH = (int) (scale * inImage.getHeight(null));

      BufferedImage outImage = new BufferedImage(scaledW, scaledH,
          BufferedImage.TYPE_INT_RGB);

      AffineTransform tx = new AffineTransform();

      if (scale < 1.0d) {
        tx.scale(scale, scale);
      }

      Graphics2D g2d = outImage.createGraphics();
      g2d.drawImage(inImage, tx, null);
      g2d.dispose();

      iconThumbnail = new ImageIcon(outImage);
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  public static void main(String[] args) {
    IDlook id = new IDlook();

    id.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });

    id.init();
    id.buildGUI();
  }
}

           
         
  
Related examples in the same category
1. 阅读数据块数据库
2. 存储块数据到数据库
3. 插入图片到MySQL
4. 从数据库显示二进制数据
5. 实现二进制数据到客户端
6. JDBC的处理二进制数据
7. 插入图像数据库表
8. BLOB和JDBC:图片
9. 二进制数据:图片2
10. 插入图片
11. 检索图像
12. 从一个表存储和检索对象
13. 从数据库阅读CLOBs数据
14. 从一个数据库表使用BLOB数据:撷取字节BLOB 。
15. CLOBs数据转化为数据库?
16. 使用二进制数据插入到一个数据库表
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.