使用Java对数据库进行基本的查询和更新操作
程序员文章站
2024-03-06 11:14:31
数据库查询
利用connection对象的createstatement方法建立statement对象,利用statement对象的executequery()方法执行s...
数据库查询
利用connection对象的createstatement方法建立statement对象,利用statement对象的executequery()方法执行sql查询语句进行查询,返回结果集,再形如getxxx()的方法从结果集中读取数据。经过这样的一系列步骤就能实现对数据库的查询。
【例】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); //创建对象 } }
java数据库更新
数据库更新操作包括数据表创建、删除、以及数据表记录的增加、删除、修改等操作。如果利用数据 sql命令实现,则利用statement对旬的executeupdate()方法,执行sql的update语句,实现数据表的修改;执行sql的insert语句,实现数据表记录的添加。
例如,在前面数据为查询例子基础上,再增加对数据表的修改和插入。限于篇幅,不再给出完整程序,只给出实现修改和插入的方法。程序可再增设插入、,,除保存按钮,通过已有的浏览,定位到数据表的特定位置,对痈疽记录进行编辑修改,或插入,或删除,然后按保存按钮,完成修改后的数据表保存。
下面用代码说明数据表更新的方法。与数据表连接时,需指定获得的resultset 对象是可更新的。
stmt = connect.createstatement(resultset.type_scroll_insensitive,resultset.concur_updatable);
上一篇: java内部类使用总结