一实验目的(1)理解JDBC的工作原理,熟悉java.sql包中与数据库访问相关的类及其用法,如DriverManager、Connection、Statement、ResultSet。(2)熟悉利用JDBC进行数据库访问的步骤:—加载JDBC驱动程序(Class.forName()—建立数据库连接(DriverManager.getConnection())—发布SQL命令(stmt=Con.createStatement(),stmt.executeQuery())—取结果集并处理(ResultSet的next()方法和.get***()方法)—关闭连接,释放对象(close())(3)掌握建立ODBC数据源的方法,会使用JDBC-ODBCBridge进行数据库访问。二实验内容编写图形界面程序,利用JDBC实现图书/同学通讯录/校园卡/团员/教师/学生管理系统。(任选1题,也可自拟题目,但需指导教师同意!)三实验要求(1)进行规范的数据库设计,正确地定义关系数据表的结构及表间联系(包括:字段的数据类型、宽度、精度、主键、外键、缺省值)。(2)要求界面布局紧凑、流畅、美观,实现的功能较为完善(3)本实验分两次完成,第一次可以先做一些准备测试,旨在熟悉JDBCAPI编程接口中相关类的使用方法,测试中可以先基于字符界面实现功能,再逐步过渡到图形界面。四实验步骤(1)在Access或SQLServer中建立数据库及基础表。在控制面板中正确配置ODBC数据源,并测试成功。(2)编写图形界面的Application,利用JDBC-ODBCBridge进行数据库访问,实现要求的功能。五实验主要代码面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计六运行界面主界面:录入演示:面向对象程序设计查询演示:面向对象程序设计判断演示:面向对象程序设计删除演示:删除后再查询:学号:511020830|姓名:朱凯周|性别:男|班级:D软件101|籍贯:无锡|生日:1992-03-16|已删除。面向对象程序设计在学号文本框内输入学号,按下回车,其他信息自动显示。把“D软件101”改成“D计算机101”面向对象程序设计importjava.sql.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;//加载包。publicclassjdbc_winXsy{publicstaticvoidmain(Stringargs[]){InfoWindowwin=newInfoWindow();}}//主控函数classInfoWindowextendsFrameimplementsActionListener{Button录入=newButton(录入);//新建按钮,录入。Button查询=newButton(查询);//新建按钮,查询。Button判断=newButton(判断);//新建按钮,判断。Button删除=newButton(删除);//新建按钮,删除。Button修改=newButton(修改);//新建按钮,修改。Button清空=newButton(清空);//新建按钮,清空。TextArea显示区=newTextArea(10,68);//新建文本区,这里是长为68个字符,高为10行。InfoWindow()//与类同名的构造函数。{setLayout(newFlowLayout());面向对象程序设计/*设置布局格式,这里是FlowLayout布局,具体就是组件会按照加入的先后顺序从左到右排列,一行排满之后才会转到下一行。这里FlowLayout.LEFT指的是所有的组件左对齐。组件调用setSize()方法设置的大小无效。*/setTitle(学生信息管理-Xsy);//设置窗口标题显示区.append(\n\n\n);显示区.append(=============================================\n);显示区.append(====\n);显示区.append(==欢迎使用学生信息管理系统==\n);显示区.append(====\n);显示区.append(====\n);显示区.append(==designedby薛思雨==\n);显示区.append(=============================================\n);//欢迎界面add(newLabel(学生信息表));//添加标签:“学生信息表:”。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(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});//添加窗口监听器,在实现“关闭窗口”这个事件时,程序退出。setVisible(true);//设置可见。setBounds(100,100,520,300);//设置弹出窗口的坐标位置和大小。前两个数/是以屏幕//左上角为原点的坐标,后两个数字,是窗口的宽与高。validate();}publicvoidactionPerformed(ActionEvente){Connectioncon;Statementstmt;ResultSetrs;面向对象程序设计PreparedStatementprestmt;try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);//加载驱动程序。}catch(ClassNotFoundExceptionex){}if(e.getSource()==查询)//点击查询按钮执行的操作。{try{con=DriverManager.getConnection(jdbc:odbc:sun,,);//连接数据源。stmt=con.createStatement();//发送SQL语句并处理结果rs=stmt.executeQuery(select*frominformationorderbynumber);//返回结果集。while(rs.next())//列出表中的所有信息。{Stringnumber=rs.getString(1);Stringname=rs.getString(2);Stringsex=rs.getString(3);Stringsclass=rs.getString(4);Stringnativeplace=rs.getString(5);Stringbirthday=rs.getString(6);显示区.append(学号:+number+|);显示区.append(姓名:+name+|);显示区.append(性别:+sex+|);面向对象程序设计显示区.append(班级:+sclass+|);显示区.append(籍贯:+nativeplace+|);显示区.append(生日:+birthday+|+\n);}显示区.append(===========================================================================\n);con.close();//关闭连接。}catch(SQLExceptionex){}}//“查询”按钮执行结束。elseif(e.getSource()==录入)//当点击“录入”按钮时。{LDialogdia=newLDialog(this,录入);//弹出“录入”界面。}//“录入”按钮执行结束。elseif(e.getSource()==判断)//当点击“判断”按钮时。{//弹出问题对话框。上面显示“请输入需要判断的学生学号:”,下面有空框,可以输入。Stringnumber=JOptionPane.showInputDialog(this,请输入需要判断的学生学号:,判断,JOptionPane.QUESTION_MESSAGE);charn1[],n2[];//定义两个数组n1,n2。n1=newchar[2];//n1的存放空间是2个字符。n2=newchar[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中。Strings1=newString(n1);//把n1中的信息作为字符串s1重新定义,这样方便后面使用。Strings2=newString(n2);//把n2中的信息作为字符串s2重新定义,这样就可以输出。if(s1.equals(01))//判断s1是否等与“01”,字符串的比较用.equals()方法。{/*当s1字符串是“01”时,弹出信息对话框。上面显示:该学生是海洲书院X班,X的取值是s2的字符串。*/JOptionPane.showMessageDialog(this,该学生是海洲书院+s2+班,结果,JOptionPane.INFORMATION_MESSAGE);}elseif(s1.equals(02)){/*当s1字符串是“02”时,弹出信息对话框。上面显示:该学生是瀛洲书院X班,X的取值是s2的字符串。*/JOptionPane.showMessageDialog(this,该学生是瀛洲书院+s2+班,结果,JOptionPane.INFORMATION_MESSAGE);}elseif(s1.equals(03))面向对象程序设计{/*当s1字符串是“03”时,弹出信息对话框。上面显示:该学生是郁洲书院X班,X的取值是s2的字符串。*/JOptionPane.showMessageDialog(this,该学生是郁洲书院+s2+班,结果,JOptionPane.INFORMATION_MESSAGE);}elseif(s1.equals(04)){/*当s1字符串是“01”时,弹出信息对话框。上面显示:该学生是凌洲书院X班,X的取值是s2的字符串。*/JOptionPane.showMessageDialog(this,该学生是凌洲书院+s2+班,结果,JOptionPane.INFORMATION_MESSAGE);}}//“判断”按钮执行结束。elseif(e.getSource()==删除)//以下是删除按钮的操作。{Stringno=JOptionPane.showInputDialog(this,请输入将要删除的学生学号:,删除,JOptionPane.QUESTION_