Java数据库程序设计实验.doc

上传人:飞****2 文档编号:52744680 上传时间:2022-10-23 格式:DOC 页数:16 大小:216.50KB
返回 下载 相关 举报
Java数据库程序设计实验.doc_第1页
第1页 / 共16页
Java数据库程序设计实验.doc_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《Java数据库程序设计实验.doc》由会员分享,可在线阅读,更多相关《Java数据库程序设计实验.doc(16页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、实验8 Java数据库程序设计一、实验名称和性质所属课程Java语言程序设计实验名称Java数据库程序设计实验学时2实验性质验证 综合设计必做/选做必做 选做二、实验目的1. 掌握创建数据库应用程序的各个重要环节;2. 掌握使用JDBC API提供的接口和类进行连接SQL Server数据库,执行SQL语句,处理结果集等操作方法。三、实验内容现有一个学生数据表student,包含四个字段:no(学号),姓名(name),性别(gendar),联系电话(tel)。请调试程序StudentManager.java,实现对SQL Server中数据表student的插入和浏览操作。四、实验的软硬件环

2、境要求硬件环境要求:PC计算机;内存512MB以上使用的软件名称、版本号以及模块:操作系统:Win 7或Windows XP软件:JDK 7.0;Eclipse;数据库系统:SQL Server 2008五、知识准备前期要求掌握的知识:了解结构化查询语言SQL的相关内容。实验相关理论或原理: Java语言提供了对数据库的强大支持,Java语言提供JDBC来实现对数据库访问和数据处理的支持。利用JDBC来访问特定的数据库,实现对数据库的各种操作。具体有7步:(1) 导入JDBC类;(2) 装载/注册驱动程序;(3) 连接数据库;(4) 创建语句对象;(5) 执行SQL语句;(6) 处理结果;(7

3、) 关闭连接。六、实验验证性实验1首先启动SQL Server 2008,连接成功后,“右键-新建数据库”新建一个名为“mytest”的数据库,在该数据库中创建一张名为“student”的数据表(选择菜单“表-新建表”)。表结构如表14.1所示。查询student表中所有的数据,并在控制台显示,如图14.1所示。表14.1 student表的结构字段名类型宽度备注novarchar10学号namevarchar10姓名scoredecimal2成绩图14.1import java.sql.*;public class SimpleDBDemo static String strDriver =

4、代码1;static String strURL = 代码2;public static void main(String args) try Class.forName(strDriver);System.out.println(SQLServerDriver success);Connection con = DriverManager.getConnection(strURL, sa, sa);System.out.println(Connection success);Statement stm = 代码3;String strSql = select * from student;R

5、esultSet rs = stm.executeQuery(strSql);while(代码4)String s1 = rs.getString(1);String s2 = rs.getString(2);Double d3 = rs.getDouble(3);System.out.println(s1+t+s2+tt+d3); catch (ClassNotFoundException e) e.printStackTrace();catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); 验证

6、性实验1建立数据库mytest和数据表student,利用JTabbedPane新建选项卡 一个名为“inputPanel”(录入记录)。另一个名为“viewPanel”(浏览记录)。1)建立数据库mytest和表student首先启动SQL Server 2008,连接成功后,“右键-新建数据库”新建一个名为“mytest”的数据库,在该数据库中创建一张名为“student”的数据表(选择菜单“表-新建表”)。表结构如表14.2所示:表14.2 student表的结构字段名类型宽度备注novarchar10学号namevarchar10姓名gendarvarchar2性别telvarchar

7、11联系电话2) 建立程序界面启动Eclipse,新建一个Java应用程序项目,名称为“StudentManager”。利用JTabbedPane新建选项卡 一个名为“inputPanel”(录入记录)。另一个名为“viewPanel”(浏览记录)。 在“录入记录”面板上添加一个面板“inputInnerPanel”和一个按钮“inputBtn”,按钮标题为“录入”。在面板“inputInnerPanel”上添加4个标签和4个文本字段,具体内容如表14.3所示。表14.3 四个标签和文本字段标签名称标签文本文本字段名称文本字段宽度noLabel学号noField10nameLabel姓名nam

8、eField10gendarLabel性别gendarField2telLabel联系电话telField11添加完成后,录入界面如图14.2所示。图14.2 录入记录界面然后,在“浏览记录”面板中添加一个文本区字段“viewArea”和一个按钮“viewBtn”,标题为“浏览”。界面如图14.3所示。图14.3 浏览记录界面3)编写数据库连接和关闭的方法(1) 定义连接数据库的方法:connection() 在“源代码”视图下,先导入“java.sql.*”包,然后输入以下代码,public void connection() /连接数据库; try Class.forName (代码1)

9、; /装载SQL Server 2008驱动程序;conn = DriverManager.getConnection (代码2) ; /连接SQL Server 2008数据库mytest stmt = conn.createStatement(); /获得执行语句对象stmt; catch (ClassNotFoundException e1) System.err.println(驱动程序装载失败!); catch (SQLException e2) e2.getSQLState(); e2.getMessage(); (2) 定义关闭数据库连接的方法:close()在“源代码”视图下,

10、输入以下代码:public void close() /关闭数据连接 try if (stmt != null) stmt.close(); if (conn != null) conn.close(); catch (SQLException e2) System.err.println(不能正常关闭); 4)编写按钮单击事件响应代码(1) 转到“设计”视图,双击“录入”按钮,输入以下代码:String sno = noField.getText(); /获得学号 String sname = nameField.getText(); /获得姓名 String sgendar = genda

11、rField.getText(); /获得性别 String stel = telField.getText(); /获得联系电话; try connection(); String InsSQL; InsSQL = INSERT INTO student (no,name,gendar,tel) + VALUES( + + sno + , + + sname + , + + sgendar + , + + stel +); /定制插入SQL语句字符串 int rs = stmt.executeUpdate(InsSQL); /执行将新记录插入到数据表student中 JOptionPane.

12、showMessageDialog(null, 记录已添加!); catch (SQLException e1) System.err.println(e1.getSQLState(); finally close(); /关闭数据库 (2) 转到“设计”视图,双击“浏览”按钮,输入以下代码:try String viewString = ; connection(); ResultSet rs = stmt.executeQuery(SELECT * From student); ResultSetMetaData rsMeta = rs.getMetaData(); int nums =

13、rsMeta.getColumnCount(); /获得字段名称; for (int i = 1; i = nums; i+) viewString += rsMeta.getColumnName(i) + t; viewString += n; /获得数据表student的记录; while (rs.next() for (int i = 1; i = nums; i+) viewString += rs.getString(i) + t; viewString += n; viewArea.setText(viewString); catch (SQLException e1) Syste

14、m.err.println(浏览学生记录失败); System.err.println(e1.getSQLState() + e1.getMessage(); finally close(); 5)运行程序,进行测试。在“录入记录”界面中,输入学号、姓名、性别和联系电话后,单击“录入”按钮,可以把输入的内容存入数据库表中。在“浏览记录”界面中,单击“浏览”按钮,可以查看数据库表中的内容。如图14.4所示。图14.4 浏览记录结果验证性实验21实验要求设计一个学籍管理系统,实现如下系统功能:1)实现录入学生基本信息的功能;2)实现浏览学生基本信息的功能;3)实现查询学生基本信息的功能;4)实现删

15、除学生基本信息的功能;运行结果如图14.5所示:图 14.5学籍管理系统2. 程序参考代码import javax.swing.*;import java.awt.*;public class StudentPanel extends JPanel JLabel snoLabel;/学生学号标签 JLabel snameLabel;/学生姓名标签 JLabel cnoLabel;/课程号标签 JLabel cnameLabel;/课程名标签 JLabel addressLabel;/上课地点标签 JLabel timeLabel;/上课时间标签 JTextField snoField;/学生学

16、号输入框 JTextField snameField;/学生姓名输入框 JTextField cnoField;/课程号输入框 JTextField cnameField;/课程名输入框 JTextField addressField;/上课地点输入框 JTextField timeField;/上课时间输入框 public StudentPanel() setGUIComponent(); public void setGUIComponent() /初始化组件 snoLabel = new JLabel(学号); snoField = new JTextField(10); snameLa

17、bel = new JLabel(姓名); snameField = new JTextField(10); cnoLabel = new JLabel(课程号); cnoField = new JTextField(10); cnameLabel = new JLabel(课程名); cnameField = new JTextField(10); addressLabel = new JLabel(上课地点); addressField = new JTextField(10); timeLabel = new JLabel(上课时间); timeField = new JTextFiel

18、d(10); /设置组件 setLayout(new GridLayout(3,4);/设置排列方式 add(snoLabel);add(snoField); add(snameLabel);add(snameField); add(cnoLabel);add(cnoField); add(cnameLabel);add(cnameField); add(addressLabel);add(addressField); add(timeLabel);add(timeField); /清楚文本框的内容 public void cleanContent() snoField.setText();

19、snameField.setText(); cnoField.setText(); cnameField.setText(); addressField.setText(); timeField.setText(); /set() methods public void setsno(String n)/设置学号文本框内容为n snoField.setText(n); public void setsname(String name)/设置学生姓名文本框为name snameField.setText(name); public void setcno(String m)/设置课程号文本框为m

20、 cnoField.setText(m); public void setcname(String cname)/设置课程名文本框为cname cnameField.setText(cname); public void setaddress(String address)/设置上课地址为address addressField.setText(address); public void settime(String time)/设置上课时间为time timeField.setText(time); /get() methods public String getsno()/得到学生学号 r

21、eturn snoField.getText(); public String getsname()/得到学生姓名 return snameField.getText(); public String getcno()/得到课程号 return cnoField.getText(); public String getcname()/得到课程名 return cnameField.getText(); public String getaddress()/得到上课地址 return addressField.getText(); public String gettime()/得到上课时间 r

22、eturn timeField.getText(); import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;public class StudentManagement extends JFrame implements ActionListenerJTabbedPane dbTabPane;/定义选择框JPanel inputPanel;/录入界面JPanel viewPanel;/浏览界面JPanel searchPanel;/查询界面JPanel deletePanel;/删除界面

23、JButton inputbtn;StudentPanel inputinnerPanel;/录入组件JButton viewbtn;JTextArea viewArea;/浏览组件JLabel inputnoLabel;/删除组件JTextField inputnoField;JButton inputnobtn;StudentPanel deleteinnerPanel;JLabel inputnoLabel1;/查询组件JTextField inputnoField1;JTextArea viewArea1;JButton inputnobtn1;Connection conn;Stat

24、ement stmt;public StudentManagement()super(计科081学生选课查询);setGUIComponent();public void setGUIComponent()Container c = getContentPane();c.setLayout(new BorderLayout();dbTabPane = new JTabbedPane();/定义录入面板inputPanel = new JPanel();inputPanel.setLayout(new FlowLayout();inputbtn = new JButton(录入);inputbt

25、n.addActionListener(this);inputinnerPanel = new StudentPanel();inputPanel.add(inputinnerPanel);inputPanel.add(inputbtn);dbTabPane.add(录入,inputPanel);/定义浏览面板viewPanel = new JPanel();viewPanel.setLayout(new BorderLayout();viewArea = new JTextArea(8,50);viewbtn = new JButton(浏览);viewPanel.add(new JScro

26、llPane(viewArea),BorderLayout.CENTER);viewPanel.add(viewbtn,BorderLayout.SOUTH);viewbtn.addActionListener(this);dbTabPane.add(浏览,viewPanel);/定义查询面板inputnoLabel1 = new JLabel(输入学号);inputnoField1 = new JTextField(10);inputnobtn1 = new JButton(查询);inputnobtn1.addActionListener(this);viewArea1 = new JTe

27、xtArea(4,50);searchPanel = new JPanel();searchPanel.add(inputnoLabel1);searchPanel.add(inputnoField1);searchPanel.add(inputnobtn1);searchPanel.add(new JScrollPane(viewArea1),BorderLayout.CENTER); searchPanel.add(new JLabel( 方正为人 勤慎治学),BorderLayout.NORTH);dbTabPane.add(查询,searchPanel);/定义删除面板inputnoL

28、abel = new JLabel(输入学号);inputnoField = new JTextField(10);deletePanel = new JPanel();inputnobtn = new JButton(删除);inputnobtn.addActionListener(this);deletePanel.add(inputnoLabel);deletePanel.add(inputnoField);deletePanel.add(inputnobtn);dbTabPane.add(删除,deletePanel);c.add(BorderLayout.NORTH,dbTabPan

29、e);public void connection()/连接数据库tryString Driver = com.microsoft.jdbc.sqlserver.SQLServerDriver;Class.forName(Driver); catch(ClassNotFoundException e1)System.err.println(驱动程序加载失败);try String url=jdbc:odbc:1; conn = DriverManager.getConnection(url,sa,);stmt = conn.createStatement();catch(SQLExceptio

30、n e2)e2.getSQLState();e2.getMessage();public void close()/关闭执行语句和数据库tryif(stmt!=null)stmt.close();if(conn!=null)conn.close();catch(SQLException e2)System.err.println(不能正常关闭);public void inputRecords()/录入信息String sno1 = inputinnerPanel.getsno();/获得学号String sname1 = inputinnerPanel.getsname();/获得姓名Str

31、ing cno1 = inputinnerPanel.getcno();/获得课程号String cname1 = inputinnerPanel.getcname();/获得课程名String address1 = inputinnerPanel.getaddress();/获得地址String time1 = inputinnerPanel.gettime();/获得时间tryconnection();String insSQL = ; insSQL = insert into Student ; insSQL += values(?,?,?,?,?,?); PreparedStateme

32、nt pstmt = conn.prepareStatement(insSQL); pstmt.setString(1, sno1); pstmt.setString(2, sname1); pstmt.setString(3, cno1); pstmt.setString(4, cname1); pstmt.setString(5, address1); pstmt.setString(6, time1);pstmt.executeUpdate(); catch(SQLException e1)System.err.println(e1.getSQLState();finallyclose(

33、);JOptionPane.showMessageDialog(null, 添加成功);public void viewRecords()/浏览try String viewString = ; connection(); String sqlstring ; sqlstring = select sNo 学号,sName 姓名,cNo 课程号,cName 课程名,address 上课地点,classtime 上课时间; sqlstring += n; sqlstring += from Student; ResultSet rs = stmt.executeQuery(sqlstring);

34、 ResultSetMetaData rsMeta = rs.getMetaData(); int nums = rsMeta.getColumnCount(); /获得字段名字 for(int i =1;i=nums;i+) viewString += rsMeta.getColumnName(i)+t; viewString += n; /获得记录 while(rs.next()for(int i =1;i=nums;i+)viewString += rs.getString(i)+t;viewString += n;viewArea.setText(viewString); catch(

35、SQLException e1)System.err.println(浏览失败);System.err.println(e1.getSQLState()+e1.getMessage();finallyclose();public void searchRecords(String no)/查询 String n = no;try String searchString; String viewString1 = ; connection(); searchString = select sNo 学号,sName 姓名,cNo 课程号,cName 课程名,address 上课地址,classti

36、me 上课时间 ; searchString += from Student ; searchString += where sNo = ?; PreparedStatement pstmt = conn.prepareStatement(searchString); pstmt.setString(1, n); ResultSet rs = pstmt.executeQuery(); ResultSetMetaData rsMeta = rs.getMetaData(); int nums = rsMeta.getColumnCount(); /获得字段名字 for(int i =1;i=n

37、ums;i+) viewString1 += rsMeta.getColumnName(i)+t; viewString1 += n; /获得记录 while(rs.next()for(int i =1;i=nums;i+)viewString1+=rs.getString(i)+t;viewString1 += n;viewArea1.setText(viewString1); catch(SQLException e1)System.err.println(查询失败);System.err.println(e1.getSQLState()+e1.getMessage();finallycl

38、ose();public void deleteRecords(String no)/删除String n = no;tryString deleteString; connection();deleteString = delete from Student ;deleteString += where sNo = ?;PreparedStatement pstmt = conn.prepareStatement(deleteString);pstmt.setString(1, n);pstmt.executeUpdate(); catch(SQLException e1)System.err.println(操作失败);System.err.println(e1.getSQLState()+e1.getMessage();finallyclose();JOptionPane.showMessageDialog(null, 删除成功);public void actionPerformed(ActionEvent e)if(e.getSource() = inputbtn)inputRecords();else if(e.get

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com