JAVA-JDBC连接数据库(查询-添加-修改-删除).doc_第1页
JAVA-JDBC连接数据库(查询-添加-修改-删除).doc_第2页
JAVA-JDBC连接数据库(查询-添加-修改-删除).doc_第3页
JAVA-JDBC连接数据库(查询-添加-修改-删除).doc_第4页
JAVA-JDBC连接数据库(查询-添加-修改-删除).doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计一 实验目的 (1)理解JDBC的工作原理,熟悉java.sql包中与数据库访问相关的类及其用法,如DriverManager、 Connection、Statement、ResultSet。(2)熟悉利用JDBC进行数据库访问的步骤: 加载JDBC驱动程序(Class.forName() 建立数据库连接(DriverManager.getConnection() 发布命令(stmt=Con.createStatement(),stmt.executeQuery() 取结果集并处理(ResultSet的next()方法和.get()方法)关闭连接,释放对象(close())(3)掌握建立ODBC数据源的方法,会使用JDBC-ODBC Bridge进行数据库访问。二 实验内容编写图形界面程序,利用JDBC实现图书同学通讯录校园卡团员教师学生管理系统。(任选1题,也可自拟题目,但需指导教师同意!)三 实验要求(1) 进行规范的数据库设计,正确地定义关系数据表的结构及表间联系(包括:字段的数据类型、宽 度、精度、主键、外键、缺省值)。(2)要求界面布局紧凑、流畅、美观,实现的功能较为完善(3)本实验分两次完成,第一次可以先做一些准备测试,旨在熟悉编程接口中相关类的使用方法,测试中可以先基于字符界面实现功能,再逐步过渡到图形界面。四 实验步骤(1)在Access或SQL Server中建立数据库及基础表。在控制面板中正确配置数据源,并测试成功。(2)编写图形界面的Application,利用JDBC-ODBC Bridge进行数据库访问,实现要求的功能。五 实验主要代码 六 运行界面主界面: 录入演示: 查询演示: 判断演示: 删除演示: 删除后再查询:学号:511020830|姓名:朱凯周|性别:男|班级:D软件101|籍贯:无锡|生日:1992-03-16| 已删除。 在学号文本框内输入学号,按下回车,其他信息自动显示。 把“D软件101”改成“D计算机101”import java.sql.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;/加载包。public class jdbc_winXsy public static void main(String args) InfoWindow win=new InfoWindow(); /主控函数class InfoWindow extends Frame implements ActionListener Button 录入=new Button(录入);/新建按钮,录入。 Button 查询=new Button(查询);/新建按钮,查询。 Button 判断=new Button(判断);/新建按钮,判断。 Button 删除=new Button(删除);/新建按钮,删除。 Button 修改=new Button(修改);/新建按钮,修改。 Button 清空=new Button(清空);/新建按钮,清空。 TextArea 显示区=new TextArea(10,68);/新建文本区,这里是长为68个字符,高为10行。 InfoWindow()/与类同名的构造函数。 setLayout(new FlowLayout(); /*设置布局格式,这里是FlowLayout布局,具体就是组件会按照加入的先后顺序从左到右 排列,一行排满之后才会转到下一行。这里FlowLayout.LEFT指的是所有的组件左对齐。 组件调用setSize()方法设置的大小无效。*/ setTitle(学生信息管理-Xsy);/设置窗口标题 显示区.append(nnn); 显示区.append( =n); 显示区.append( = =n); 显示区.append( = 欢迎使用学生信息管理系统 =n); 显示区.append( = =n); 显示区.append( = =n); 显示区.append( = designed by 薛思雨 =n); 显示区.append( =n); /欢迎界面 add(new Label(学生信息表);/添加标签:“学生信息表:”。 add(显示区); /添加文本区。 add(录入); /添加“录入”按钮。 录入.addActionListener(this);/给录入按钮注册ActionListener监听器。 add(查询); /添加“查询”按钮。 查询.addActionListener(this);/给查询按钮注册ActionListener监听器。 add(判断); /添加“判断”按钮。 判断.addActionListener(this);/给判断按钮注册ActionListener监听器。 add(删除); /添加“删除”按钮。 删除.addActionListener(this);/给删除按钮注册ActionListener监听器。 add(修改); /添加“修改”按钮。 修改.addActionListener(this);/给修改按钮注册ActionListener监听器。 add(清空); /添加“修改”按钮。 清空.addActionListener(this);/给清空按钮注册ActionListener监听器。 addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );/添加窗口监听器,在实现“关闭窗口”这个事件时,程序退出。 setVisible(true);/设置可见。 setBounds(100,100,520,300);/设置弹出窗口的坐标位置和大小。前两个数/是以屏幕 /左上角为原点的坐标,后两个数字,是窗口的宽与高。 validate(); public void actionPerformed(ActionEvent e) Connection con; Statement stmt; ResultSet rs; PreparedStatement prestmt; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/加载驱动程序。 catch(ClassNotFoundException ex) if(e.getSource()=查询)/点击查询按钮执行的操作。 try con=DriverManager.getConnection(jdbc:odbc:sun,);/连接数据源。 stmt=con.createStatement();/发送 SQL 语句并处理结果 rs=stmt.executeQuery(select * from information order by number);/返回结果集。 while(rs.next()/列出表中的所有信息。 String number=rs.getString(1); String name=rs.getString(2); String sex=rs.getString(3); String sclass=rs.getString(4); String nativeplace=rs.getString(5); String birthday=rs.getString(6); 显示区.append(学号:+number+|); 显示区.append(姓名:+name+|); 显示区.append(性别:+sex+|); 显示区.append(班级:+sclass+|); 显示区.append(籍贯:+nativeplace+|); 显示区.append(生日:+birthday+|+n); 显示区.append(=n); con.close();/关闭连接。 catch(SQLException ex) /“查询”按钮执行结束。 else if (e.getSource()=录入)/当点击“录入”按钮时。 LDialog dia=new LDialog(this,录入); /弹出“录入”界面。 /“录入”按钮执行结束。 else if (e.getSource()=判断)/当点击“判断”按钮时。 /弹出问题对话框。上面显示“请输入需要判断的学生学号:”,下面有空框,可以输入。 String number= JOptionPane.showInputDialog(this,请输入需要判断的学生学号:, 判断,JOptionPane.QUESTION_MESSAGE); char n1,n2;/定义两个数组n1,n2。 n1=new char 2;/n1的存放空间是2个字符。 n2=new char 2;/n2的存放空间是2个字符。 number.getChars(3,5,n1,0); /*获取“学号”文本框内的字符串,截取第4,5两个字符存放到n1中。在东港的学号中, 4,5两位是所在书院的号码;6,7两位是所在班级的号码。*/ number.getChars(5,7,n2,0); /获取“学号”文本框内的字符串,截取第6,7两个字符存放到n2中。 String s1=new String(n1);/把n1中的信息作为字符串s1重新定义,这样方便后面使用。 String s2=new String(n2);/把n2中的信息作为字符串s2重新定义,这样就可以输出。 if (s1.equals(01) )/判断s1是否等与“01”,字符串的比较用.equals()方法。 /*当s1字符串是“01”时,弹出信息对话框。上面显示:该学生是海洲书院 X班,X的取值是s2的字符串。*/ JOptionPane.showMessageDialog(this,该学生是海洲书院+s2+班, 结果,JOptionPane.INFORMATION_MESSAGE); else if ( s1.equals(02) ) /*当s1字符串是“02”时,弹出信息对话框。上面显示:该学生是瀛洲书院 X班,X的取值是s2的字符串。*/ JOptionPane.showMessageDialog(this,该学生是瀛洲书院+s2+班, 结果,JOptionPane.INFORMATION_MESSAGE); else if ( s1.equals(03) ) /*当s1字符串是“03”时,弹出信息对话框。上面显示:该学生是郁洲书院 X班,X的取值是s2的字符串。*/ JOptionPane.showMessageDialog(this,该学生是郁洲书院+s2+班, 结果,JOptionPane.INFORMATION_MESSAGE); else if ( s1.equals(04) ) /*当s1字符串是“01”时,弹出信息对话框。上面显示:该学生是凌洲书院 X班,X的取值是s2的字符串。*/ JOptionPane.showMessageDialog(this,该学生是凌洲书院+s2+班, 结果,JOptionPane.INFORMATION_MESSAGE); /“判断”按钮执行结束。 else if (e.getSource()=删除)/以下是删除按钮的操作。 String no= JOptionPane.showInputDialog(this,请输入将要删除的学生学号:, 删除,JOptionPane.QUESTION_MESSAGE);/弹出信息对话框。 try con=DriverManager.getConnection(jdbc:odbc:sun,);/连接数据源。 prestmt=con.prepareStatement(DELETE FROM information WHERE number=?); /预处理-删除。 prestmt.setString(1, no);/设置第一个问号的取值 prestmt.executeUpdate();/更新数据。 JOptionPane.showMessageDialog(this,学号为+no+的学生记录已删除!, 删除,JOptionPane.INFORMATION_MESSAGE);/弹出操作成功的对话框。 con.close();/关闭连接。 catch(SQLException ex) System.out.println(e); else if (e.getSource()=修改)/执行修改操作。 CDialog dia=new CDialog(this,修改); /弹出“修改”界面 else if (e.getSource()=清空)/执行清空操作。 显示区.setText();/清空文本框。 class LDialog extends Dialog implements ActionListener/录入界面。 TextField 学号,姓名,班级,生日; JRadioButton 男,女; ButtonGroup group=null; JPanel p1,p2; Choice choice; Button 确定,取消; LDialog(Frame f,String s) super(f,s); 学号=new TextField(10); 姓名=new TextField(10); 班级=new TextField(10); 生日=new TextField(10); group=new ButtonGroup(); 男=new JRadioButton(男,true); 女=new JRadioButton(女,false); group.add(男); group.add(女); p1 = new JPanel(); p1.add(男);p1.add(女); choice=new Choice();/新建名为choice的下拉列表。 choice.add(南京);choice.add(无锡);choice.add(常州); choice.add(苏州);choice.add(镇江);choice.add(扬州); choice.add(南通);choice.add(盐城);choice.add(徐州); choice.add(淮安);choice.add(宿迁);choice.add(连云港); choice.add(泰州);/在组合框中添加这些地名:南京,无锡,常州等等。 add(choice);/添加组合框 确定=new Button(确定); 取消=new Button(取消); 确定.addActionListener(this); 取消.addActionListener(this); p2 = new JPanel(); p2.add(确定); p2.add(取消); setLayout(new FlowLayout(FlowLayout.LEFT); add(new Label(学号:);add(学号); add(new Label(姓名:);add(姓名); add(new Label(性别:);add(p1); add(new Label(班级:);add(班级); add(new Label(籍贯:);add(choice); add(new Label(生日:);add(生日); add(p2); setBounds(200,200,180,260); setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) dispose();); public void actionPerformed(ActionEvent e) Connection con;Statement stmt;ResultSet rs;PreparedStatement prestmt;try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException ex) if (e.getSource()=确定)/执行确定操作。 String number=学号.getText();/获取“学号”文本框内输入的信息。 String name=姓名.getText();/获取“姓名”文本框内输入的信息。 String sex=null; if(男.isSelected()sex=男.getText();elsesex=女.getText(); /对于“男”“女”两个单选框的判断,isSelected()被选中。 String sclass=班级.getText();/获取“班级”文本框内输入的信息。 String nativeplace=choice.getSelectedItem(); /获取“choice”下拉列表选择的信息。 String birthday=生日.getText();/获取“生日”下拉列表选择的信息。 if(number.length()0 & name.length()0& sclass.length()0) /判断“学号”“姓名”“班级”文本框内是否输入了信息。 /“学号”“姓名”“班级”文本框内有信息时,新建stu对象。 try con=DriverManager.getConnection(jdbc:odbc:sun,); /连接数据源 prestmt=con.prepareStatement(INSERT INTO information VALUES(?,?,?,?,?,?); /预处理-插入。 prestmt.setString(1,number); prestmt.setString(2,name); prestmt.setString(3,sex); prestmt.setString(4,sclass); prestmt.setString(5,nativeplace); prestmt.setString(6,birthday); /给?赋值。 prestmt.executeUpdate();/更新数据。 con.close();/关闭连接。 JOptionPane.showMessageDialog(this,信息录入成功!, OK,JOptionPane.INFORMATION_MESSAGE);/弹出成功对话框。 catch(SQLException ex) System.out.println(e); 学号.setText();/把“学号”文本框内容清空,以便下次输入。 姓名.setText();/把“姓名”文本框内容清空,以便下次输入。 班级.setText();/把“班级”文本框内容清空,以便下次输入。 生日.setText();/把“生日”文本框内容清空,以便下次输入。 else /*当“学号”“姓名”“班级”文本框内没有输入信息时,则会弹出一个“警告” 窗口,上面显示“请输入信息!”。*/ JOptionPane.showMessageDialog(this,请输入信息!,Warning, JOptionPane.WARNING_MESSAGE);/弹出警告对话框。 else/“取消”按钮。 dispose(); class CDialog extends Dialog implements ActionListener/修改界面 TextField 学号,姓名,性别,班级,籍贯,生日; Button 确定,取消; CDialog(Frame f,String s) super(f,s); 学号=new TextField(10); 姓名=new TextField(10); 性别=new TextField(10); 班级=new TextField(10); 籍贯=new TextField(10); 生日=new TextField(10); 确定=new Button(确定); 取消=new Button(取消); 确定.addActionListener(this); 取消.addActionListener(this); 学号.addActionListener(this); /注册监听器。 setLayout(new FlowLayout(FlowLayout.LEFT);/设置布局。 add(new Label(学号:); add(学号); add(new Label(姓名:); add(姓名); add(new Label(性别:); add(性别); add(new Label(班级:); add(班级); add(new Label(籍贯:); add(籍贯); add(new Label(生日:); add(生日); add(确定); add(取消); /添加各种组件。 setBounds(200,200,180,250); setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) dispose();); public void actionPerformed(ActionEvent e) Connection con;ResultSet rs;PreparedStatement prestmt1,prestmt2;try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/加载驱动器。 catch(ClassNotFoundException ex) if(e.getSource()=学号)/在学号文本区按回车所执行的命令。 try con=DriverManager.getConnection(jdbc:odbc:sun,);/连接数据源。 prestmt1=con.prepareStatement(SELECT name,sex,sclass,nativeplace,birthday FROM information WHERE number= ?);/预处理-条件查询。 prestmt1.setString(1,学号.getText();/设置?的值。 rs=prestmt1.executeQuery();/返回结果集。 while (rs.next() 姓名.setText(rs.getString(1); 性别.setText(rs.getString(2); 班级.setText(rs.getString(3); 籍贯.setText(rs.getString(4); 生日.setText(rs.getString(5); con.close();/关闭连接。 catch(SQLException ex) System.out.println(e); else if (e.getSource()=确定)/执行确定 String number=学号.getText().trim(); String name=姓名.getText().trim(); String sex=性别.getText().trim(); String sclass=班级.getText().trim(); Stri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论