利用Connection对象的createStatement方法建立Statement对象,利用Statement对象的executeQuery()方法执行SQL查询语句进行查询,返回结果集,再形如getXXX()的方法从结果集中读取数据。经过这样的一系列步骤就能实现对数据库的查询。
【例 13-9】Java应用程序访问数据库。应用程序打开考生信息表ksInfo,从中取出考生的各项信息。设考生信息数据库的结构如下:
类型 | 字符串 | 字符串 | 整数 | 字符串 | 字符串 |
字段名 | 考号 | 姓名 | 成绩 | 地址 | 简历 |
代码如下:
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import java.util.*;
- import java.sql.*;
- public class Example10_9 extends JFrame implements ActionListener{
- public static Connection connectByJdbcodbc(String url, String username,String password){
- Connection con = null;
- try{
- Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载ODBC驱动程序
- }
- catch (Exception e){
- e.printStackTrace();
- return null; //加载失败,连接不成功
- }
- try{
- con = DriverManager.getConnection(url, username, password);
- }
- catch (SQLException e){
- e.printStackTrace();
- return null; //连接失败
- }
- return con; //连接成功
- }
- String title[] ={"考号", "姓名", "成绩", "地址", "简历"};
- JTextField txtNo = new JTextField(8);
- JTextField txtName = new JTextField(10);
- JTextField txtScore = new JTextField(3);
- JTextField txtAddr = new JTextField(30);
- JTextArea txtresume = new JTextArea();
- JButton prev = new JButton("前一个");
- JButton next = new JButton("后一个");
- JButton first = new JButton("第一个");
- JButton last = new JButton("最后一个");
- Statement sql; //SQL语句对象
- ResultSet rs; //存放查询结果对象
- Example10_9(Connection connect){
- super("考生信息查看窗口");
- setSize(450, 350);
- try{
- sql = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
- rs = sql.executeQuery("SELECT * FROM ksInfo");
- Container con = getContentPane();
- con.setLayout(new BorderLayout(0, 6); JPanel p[] = new JPanel[4];
- for (int i = 0; i < 4; i++){
- p[i] = new JPane(new FlowLayout(FlowLayout.LEFT, 8, 0));
- p[i].add(new JLabel(title[i]));
- }
- p[0].add(txtNo);
- p[1].add(txtName);
- p[2].add(txtScore);
- p[3].add(txtAddr);
- JPanel p1 = new JPane(new GridLayout94, 1, 0, 8));
- JScrollPane jsp = new JScrollPane(txtResume,
- JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
- JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
- jsp.setPreforredSize(new Dimension(300, 60);
- for (int i = 0; i < 4; i++){
- p1.add(p[i]);
- }
- JPanel p2 = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0);
- p2.add(new JLabel(title[4]));
- p2.add(jsp);
- Jpanel p3 = new Jpanel();
- p3.add(prev);
- p3.add(next);
- p3.add(first);
- p3.add(last);
- prev.addActionListener(this);
- next.addActionListener(this);
- first.addActionListener(this);
- last.addActionlistener(this);
- rs.first();
- readRecord();
- }
- catch (Exception e){
- e.printStackTrace():
- }
- setVisible(ture);
- }
- public void modifyRecord(Connection connect){
- String stuNo = (String)JOptionPane.showInputDialog(null,
- "请输入考生考号", "输入考号对话框", JOptionPane.PLAIN_MESSAGE, null,
- null, "");
- try {
- sql = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
- rs = sql.executeQuery("SELECT * FROM ksInfo");
- Container con = getContentPane();
- con.setLayout(new Boarderlayout(0, 6));
- Jpanel p[] = new JPanel[4];
- for (int i = 0; i < ; i++){
- p[i] = new JPane(new FlowLayout(flowLayout.LEFT, 8, 0));
- p[i].add(new JLabel(title[i]));
- }
- p[0].add(txtNo);
- p[1].add(txtName);
- p[2].add(txtScore);
- p[3].add(txtAddr);
- Jpanel p1 = new Jpane(new GridLayout(4, 1, 0, 8));
- JScrollPane jsp = new JScrollPane(txtResume,
- JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
- JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
- jsp.setPreferredSize (new dimension(300, 60));
- for (int i = 0; i < 4; i++){
- p1.add(p[i]);
- }
- Jpanel p2 = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0));
- p2.add(new JLableI(title[4]));
- p2.add(jsp);
- JPanel p3 = new JPanel();
- p3.add(prev);
- p3.add(next);
- p3.add(first);
- p3.add(last);
- prev.addActionListener(this);
- next.addActionListener(this);
- first.addActionListenerIthis);
- last.addActionListener(this);
- rs.first();
- readRecord();
- }
- catch (Exception e){
- e.printStackTrace();
- }
- setVisible(true);
- }
- boolean readRecord(){
- try{
- txtNo.setText(rs.getString("考号")); txtName.setText(rs.getString("姓名")); txtScore.setText(rs.getString("成绩"));
- txtAddr.setText(rs.getString("地址")); txtResume.setText(rs.getString("简历"));
- }
- catch (SQLException e){
- e.printStackTrace(); return false;
- }
- return true;
- }
- public void actionPerformed(ActionEvent e){
- try{
- if (e.getSource() == prev)rs.previous();
- else if (e.getSource() == next)rs.next();
- else if (e.getSource() == first)rs.first();
- else if (e.getSource() == last)rs.last(); readRecord();
- }
- catch (Exception e2){}
- }
- public static void main(String args[]){
- connection connect = null;
- JFrame .setDefaultLookAndFeeDecorated(true);
- Font font = new Font("JFrame", Font.PLAIN, 14);
- if ((connect =connectByJdbcOdbc("jdbc:odbc:redsun", "xia", "1234")) == null){
- JOptionPane.showMessageDialog(null, "数据库连接失败!");
- System.exit ( - 1);
- }
- new Example10_9(connect); //创建对象
- }
- }