欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用Java对数据库进行基本的查询和更新操作

程序员文章站 2024-03-07 09:19:26
数据库查询 利用connection对象的createstatement方法建立statement对象,利用statement对象的executequery()方法执行s...

数据库查询

利用connection对象的createstatement方法建立statement对象,利用statement对象的executequery()方法执行sql查询语句进行查询,返回结果集,再形如getxxx()的方法从结果集中读取数据。经过这样的一系列步骤就能实现对数据库的查询。

【例】java应用程序访问数据库。应用程序打开考生信息表ksinfo,从中取出考生的各项信息。设考生信息数据库的结构如下:
使用Java对数据库进行基本的查询和更新操作

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); //创建对象
  }
}

java数据库更新
数据库更新操作包括数据表创建、删除、以及数据表记录的增加、删除、修改等操作。如果利用数据 sql命令实现,则利用statement对旬的executeupdate()方法,执行sql的update语句,实现数据表的修改;执行sql的insert语句,实现数据表记录的添加。

例如,在前面数据为查询例子基础上,再增加对数据表的修改和插入。限于篇幅,不再给出完整程序,只给出实现修改和插入的方法。程序可再增设插入、,,除保存按钮,通过已有的浏览,定位到数据表的特定位置,对痈疽记录进行编辑修改,或插入,或删除,然后按保存按钮,完成修改后的数据表保存。

下面用代码说明数据表更新的方法。与数据表连接时,需指定获得的resultset 对象是可更新的。

  stmt = connect.createstatement(resultset.type_scroll_insensitive,resultset.concur_updatable);