java連接數(shù)據(jù)庫(kù)課程設(shè)計(jì)(共22頁(yè))_第1頁(yè)
java連接數(shù)據(jù)庫(kù)課程設(shè)計(jì)(共22頁(yè))_第2頁(yè)
java連接數(shù)據(jù)庫(kù)課程設(shè)計(jì)(共22頁(yè))_第3頁(yè)
java連接數(shù)據(jù)庫(kù)課程設(shè)計(jì)(共22頁(yè))_第4頁(yè)
java連接數(shù)據(jù)庫(kù)課程設(shè)計(jì)(共22頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上*大 學(xué)學(xué) 生 實(shí) 驗(yàn) 報(bào) 告實(shí)驗(yàn)課程名稱 J2EE及JAVA程序設(shè)計(jì) 開課實(shí)驗(yàn)室 DS1501 學(xué) 院 軟件學(xué)院 年級(jí) 2012 專業(yè)班 2班 學(xué) 生 姓 名 學(xué) 號(hào) 開 課 時(shí) 間 2013 至 2014 學(xué)年第 2 學(xué)期總 成 績(jī)教師簽名軟件學(xué)院制J2EE及JAVA程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告 開課實(shí)驗(yàn)室:DS1501 2015 年 6 月18日學(xué)院軟件學(xué)院軟工2班姓名成績(jī)課程名稱J2EE及JAVA程序設(shè)計(jì)實(shí)驗(yàn)項(xiàng)目名 稱實(shí)驗(yàn)6-8: 圖形界面編程、抽象類與接口、數(shù)據(jù)庫(kù)。指導(dǎo)教師教師評(píng)語(yǔ)教師簽名:2014年 月 日一、 實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)六:基本掌握使用JAVA來(lái)完成基本的圖形界面

2、等調(diào)試與編程,實(shí)現(xiàn)理論課上講述的內(nèi)容PPT內(nèi)容的驗(yàn)證。實(shí)驗(yàn)七:掌握抽象類與接口的概念,驗(yàn)證代碼,能寫小程序。實(shí)驗(yàn)八:掌握利用JAVA完成數(shù)據(jù)庫(kù)課程中的基本數(shù)據(jù)記錄操作。二、實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)六內(nèi)容:調(diào)試,驗(yàn)證,課件ppt內(nèi)容,課后布置的作業(yè)(實(shí)驗(yàn)報(bào)告內(nèi)容中可不寫)。實(shí)驗(yàn)七內(nèi)容:完成教材12章關(guān)于抽象類與接口方面的范例內(nèi)容的代碼驗(yàn)證、后面作業(yè)的代碼設(shè)計(jì)(實(shí)驗(yàn)報(bào)告中可不寫)。實(shí)驗(yàn)八內(nèi)容:(二選一,提交該部分實(shí)驗(yàn)報(bào)告內(nèi)容)1) 利用圖形界面編程,實(shí)現(xiàn)C/S模式的數(shù)據(jù)庫(kù)訪問(wèn)操作。完成SQL SERVER或MYSQL數(shù)據(jù)庫(kù)管理系統(tǒng)的安裝,配置,JAVA數(shù)據(jù)庫(kù)訪問(wèn)環(huán)境的配置;完成數(shù)據(jù)庫(kù)表的建立,記錄插入等;建立

3、用戶表,包含用戶名、密碼字段;利用JAVA實(shí)現(xiàn)圖形界面,用戶登錄驗(yàn)證,進(jìn)入軟件運(yùn)行后,針對(duì)某表記錄的增、刪、改、查操作。2) 完成JAVA WEB應(yīng)用開發(fā),實(shí)現(xiàn)B/S模式的數(shù)據(jù)庫(kù)訪問(wèn)操作。完成SQL SERVER或MYSQL數(shù)據(jù)庫(kù)管理系統(tǒng)的安裝,配置,JAVA數(shù)據(jù)庫(kù)訪問(wèn)環(huán)境的配置,Tomcat服務(wù)器安裝配置;完成數(shù)據(jù)庫(kù)表的建立,記錄插入等;建立用戶表,包含用戶名、密碼字段;利用JAVA實(shí)現(xiàn)WEB應(yīng)用,通過(guò)瀏覽器訪問(wèn)WEB進(jìn)行用戶登錄驗(yàn)證,進(jìn)入WEB應(yīng)用運(yùn)行后,針對(duì)某表記錄的增、刪、改、查操作。三、使用儀器、材料JAVA SE JDK 1.7.55TomcatSql server四、實(shí)驗(yàn)過(guò)程原始

4、記錄(數(shù)據(jù)、圖表、計(jì)算等):以下是我所連接的數(shù)據(jù)庫(kù)表結(jié)構(gòu),Book表是存儲(chǔ)圖書信息的,Reader表是存儲(chǔ)讀者信息的,Borrow表是存儲(chǔ)借閱記錄的,User表是存儲(chǔ)用戶登錄用戶名和密碼的。為了不暴露表結(jié)構(gòu)和只顯示用戶需要的信息,建立了一個(gè)視圖record下面是用java連接數(shù)據(jù)庫(kù)的過(guò)程:首先下載java連接sql數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序,配置環(huán)境。下面是整個(gè)程序演示過(guò)程截圖:1.登錄界面首先是登錄界面用戶名或密碼錯(cuò)誤彈出登錄失敗消息框2.初始界面正確后進(jìn)入初始界面,從視圖中讀取的數(shù)據(jù)庫(kù)信息3.增加功能點(diǎn)擊增加按鈕彈出增加記錄對(duì)話框輸入增加記錄的信息后點(diǎn)擊確定,再回到初始界面點(diǎn)擊刷新按鈕,可以看到剛增

5、加的記錄已經(jīng)顯示在初始界面中。4.修改功能點(diǎn)擊修改按鈕,彈出修改記錄對(duì)話框根據(jù)輸入的讀者編號(hào)和圖書編號(hào)確定修改的是哪條記錄,填入修改的信息后點(diǎn)擊確定,回到初始界面點(diǎn)擊刷新,可以看到修改的記錄已修改掉5.查詢功能點(diǎn)擊查詢按鈕彈出搜索記錄對(duì)話框輸入姓名點(diǎn)擊確定就會(huì)在下面顯示此姓名的相關(guān)記錄輸入書名也可以查詢此書相關(guān)的記錄6.刪除功能,可以單行刪除也可以多行刪除首先單行刪除,選中一行后點(diǎn)擊刪除按鈕就可以刪除此條記錄,而且數(shù)據(jù)庫(kù)也相應(yīng)地刪除了此條記錄,通過(guò)點(diǎn)擊刷新再重新讀取數(shù)據(jù)庫(kù)數(shù)據(jù)可以證明刪除前刪除后多行刪除,選中多行后點(diǎn)擊刪除刪除前刪除后點(diǎn)擊刷新后以上就是整個(gè)程序演示過(guò)程遇到的問(wèn)題:1. 借書日期

6、和還書日期以date類型顯示到界面中總會(huì)少兩天,不知道為什么,所以我把date類型改為了char類型,然后就正常了。2. 開始寫刪除多行的時(shí)候,我是寫的刪除數(shù)據(jù)庫(kù)的信息并一起刪掉JTable中的信息,但是由于在刪除JTable中信息時(shí)最開始得到的序號(hào)和刪除一行后序號(hào)減少了,于是會(huì)出現(xiàn)越界的錯(cuò)誤,于是我改為了刪除數(shù)據(jù)庫(kù)信息后再調(diào)用讀取數(shù)據(jù)庫(kù)信息的函數(shù)進(jìn)行了刷新就沒問(wèn)題了。下面是連接數(shù)據(jù)庫(kù)并進(jìn)行相關(guān)操作的源代碼import java.sql.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.s

7、wing.table.*;import java.util.*;/登錄界面的類,也是初始類public class ConnectionDatabase extends JFrame implements ActionListenerprivate Connection con=null;/連接數(shù)據(jù)庫(kù)private Statement stmt=null;/執(zhí)行數(shù)據(jù)庫(kù)sql語(yǔ)句private ResultSet rs=null;/存儲(chǔ)數(shù)據(jù)庫(kù)查詢結(jié)果int if_success = 0;/判斷是否登錄成功/登錄界面的設(shè)置private JLabel namelabel = new JLabel(

8、"用戶名");private JTextField name = new JTextField(10);private JLabel passlabel = new JLabel("密碼");private JTextField pwd = new JTextField(30);private JButton commit = new JButton("登錄");public ConnectionDatabase()JPanel p1=new JPanel();p1.setLayout(new GridLayout(2,2,5,20)

9、;p1.add(namelabel);p1.add(name);p1.add(passlabel);p1.add(pwd);JPanel p2=new JPanel();p2.add(commit,BorderLayout.SOUTH);add(p1,BorderLayout.NORTH);add(p2,BorderLayout.CENTER);setSize(300,200);setTitle("登錄界面");commit.addActionListener(this);/為登錄按鈕增加監(jiān)聽器/主函數(shù),顯示登錄界面public static void main(Strin

10、g args)ConnectionDatabase login = new ConnectionDatabase();login.setLocationRelativeTo(null);login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);login.setVisible(true); /點(diǎn)擊按鈕登錄后判斷用戶名和密碼是否正確,是否允許登錄進(jìn)去public void actionPerformed(ActionEvent e)tryString sname=name.getText();String spwd=pwd.getText();/連

11、接數(shù)據(jù)庫(kù)try Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");System.out.println("成功加載SQL驅(qū)動(dòng)程序");catch(Exception exw)System.out.println("找不到SQL驅(qū)動(dòng)程序");trycon = DriverManager.getConnection("jdbc:sqlserver:/localhost:1433;DatabaseName=Library","sa&quo

12、t;,"xyz");System.out.println("數(shù)據(jù)庫(kù)連接成功");catch(Exception exy)System.out.println("數(shù)據(jù)庫(kù)連接失敗"); /執(zhí)行sql語(yǔ)句,查詢出用戶名和密碼 stmt = con.createStatement();rs=stmt.executeQuery("select name,password from User");/判斷用戶名和密碼是否正確while(rs.next()if(sname.equals(rs.getString("nam

13、e") && spwd.equals(rs.getString("password")if_success = 1; rs.close();if(if_success=1)/正確則進(jìn)入初始界面readFrame frame = new readFrame();frame.setVisible(true);elseJOptionPane.showMessageDialog(null,"登錄失??!"); catch(SQLException ex)ex.printStackTrace();/從數(shù)據(jù)庫(kù)中讀入視圖中的記錄初始界面clas

14、s readFrame extends JFrameprivate static Connection con = null;private static Statement stmt = null;private static ResultSet rs = null;/界面設(shè)置private JButton search = new JButton("查詢");private JButton adding = new JButton("增加");private JButton delete = new JButton("刪除");p

15、rivate JButton modify = new JButton("修改");private JButton fresh = new JButton("刷新");private static JTable table=new JTable();/JTable用于顯示記錄private static DefaultTableModel tmhavesold = new DefaultTableModel();/建立默認(rèn)的JTable模型 public readFrame()setTitle("圖書借還記錄");setSize(60

16、0,500);JPanel p1 = new JPanel();/創(chuàng)建面板p1放置四個(gè)按鈕.p1.setLayout(new GridLayout(1,5);p1.add(adding);p1.add(delete);p1.add(modify);p1.add(search);p1.add(fresh);add(p1,BorderLayout.NORTH);JScrollPane p2=new JScrollPane(table,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLL

17、BAR_NEVER);this.getContentPane().add(p2,BorderLayout.CENTER);/點(diǎn)擊查詢按鈕顯示查詢對(duì)話框search.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e1)JFrame queryFrame = new searchFrame();queryFrame.setVisible(true););/點(diǎn)擊增加按鈕顯示增加對(duì)話框adding.addActionListener(new ActionListener()public voi

18、d actionPerformed(ActionEvent e2)JFrame addingFrame = new addFrame();addingFrame.setVisible(true););/點(diǎn)擊刷新按鈕從數(shù)據(jù)庫(kù)中重新讀入數(shù)據(jù)fresh.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e3)read();/從數(shù)據(jù)庫(kù)視圖中讀入數(shù)據(jù));/點(diǎn)擊修改按鈕彈出修改記錄對(duì)話框modify.addActionListener(new ActionListener()public void a

19、ctionPerformed(ActionEvent e4)JFrame myframe = new modifyFrame();myframe.setVisible(true););/點(diǎn)擊刪除按鈕后的操作delete.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e5)int selectRows=table.getSelectedRows().length;/ 取得用戶所選行的行數(shù)DefaultTableModel tableModel = (DefaultTableModel)

20、table.getModel();/得到j(luò)table中的數(shù)據(jù)try ConnectData();/連接數(shù)據(jù)庫(kù)stmt = con.createStatement();if(selectRows=1)/如果選中單行int selectedRowIndex = table.getSelectedRow(); / 取得用戶所選單行 /得到選中行的Rno和Bno值 String cellValue1=(String) tableModel.getValueAt(selectedRowIndex, 0);String cellValue2=(String) tableModel.getValueAt(s

21、electedRowIndex, 1); stmt.execute("delete from Borrow where Rno='"+cellValue1+"' and Bno='"+cellValue2+"'");/根據(jù)Rno和Bno的值刪除數(shù)據(jù)庫(kù)表Borrow中此行記錄tableModel.removeRow(selectedRowIndex);/從JTable中刪除此行else if(selectRows>1)/選中多行int selRowIndexs=table.getSelectedRo

22、ws();/得到多行的行號(hào)for(int i=0; i<selRowIndexs.length; i+)/從數(shù)據(jù)庫(kù)中刪除這幾行記錄String cValue1=(String) tableModel.getValueAt(selRowIndexsi, 0);String cValue2=(String) tableModel.getValueAt(selRowIndexsi, 1); stmt.execute("delete from Borrow where Rno='"+cValue1+"' and Bno='"+cVa

23、lue2+"'");read();/從數(shù)據(jù)庫(kù)中重新讀入數(shù)據(jù)con.close();stmt.close(); catch(SQLException e)e.printStackTrace(););read();/連接數(shù)據(jù)庫(kù)public static void ConnectData()try Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");System.out.println("成功加載SQL驅(qū)動(dòng)程序");catch(Exception e)Syste

24、m.out.println("找不到SQL驅(qū)動(dòng)程序");trycon = DriverManager.getConnection("jdbc:sqlserver:/localhost:1433;DatabaseName=Library","sa","xyz");System.out.println("數(shù)據(jù)庫(kù)連接成功");catch(Exception e)System.out.println("數(shù)據(jù)庫(kù)連接失敗"); /從數(shù)據(jù)庫(kù)中讀入記錄public static void r

25、ead()try ConnectData();stmt = con.createStatement();rs=stmt.executeQuery("select *from record");Vector<String> columnName = new Vector<String>();/字段名Vector<Vector<Object>> dataVector = new Vector<Vector<Object>>();/存儲(chǔ)rs中從數(shù)據(jù)庫(kù)中查出的數(shù)據(jù)columnName.add("讀者編

26、號(hào)");columnName.add("圖書編號(hào)"); columnName.add("姓名");columnName.add("書名");columnName.add("借書日期");columnName.add("還書日期");while(rs.next()/把rs中的數(shù)據(jù)賦給dataVectorVector<Object> vec = new Vector<Object>();for(int i=1;i<=6;i+)vec.add(rs.getObj

27、ect(i);dataVector.add(vec);tmhavesold.setDataVector(dataVector, columnName);/設(shè)定模型數(shù)據(jù)和字段con.close();stmt.close();rs.close(); catch(SQLException e)e.printStackTrace();table.setModel(tmhavesold);/查詢功能的類class searchFrame extends JFrame implements ActionListenerprivate Connection con=null;private Statemen

28、t stmt=null;private ResultSet rs=null;/界面設(shè)計(jì)private JLabel namelabel = new JLabel("姓名");private JTextField name = new JTextField(5);private JLabel booklabel = new JLabel("書名");private JTextField book = new JTextField(10);private JButton commit = new JButton("確定");private

29、 JTable stable=new JTable();/一樣用jtable顯示查詢出的結(jié)果private DefaultTableModel model = new DefaultTableModel();/建立默認(rèn)的JTable模型public searchFrame()JPanel ps2=new JPanel();ps2.setLayout(new GridLayout(1,5);ps2.add(namelabel);ps2.add(name);ps2.add(booklabel);ps2.add(book);ps2.add(commit);JScrollPane ps3=new JS

30、crollPane(stable,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);add(ps2,BorderLayout.NORTH);this.getContentPane().add(ps3,BorderLayout.CENTER);this.setSize(500,380);this.setTitle("搜索記錄");commit.addActionListener(this);/為確定按鈕增加監(jiān)聽器 /點(diǎn)擊確定后查詢并顯示出,

31、過(guò)程和read()函數(shù)基本一致public void actionPerformed(ActionEvent e)try String namevalue = name.getText();String bookvalue = book.getText();try Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");System.out.println("成功加載SQL驅(qū)動(dòng)程序");catch(Exception exw)System.out.println("找不到SQL

32、驅(qū)動(dòng)程序");trycon = DriverManager.getConnection("jdbc:sqlserver:/localhost:1433;DatabaseName=Library","sa","xyz");System.out.println("數(shù)據(jù)庫(kù)連接成功");catch(Exception exy)System.out.println("數(shù)據(jù)庫(kù)連接失敗"); stmt = con.createStatement();/根據(jù)姓名或書名查詢記錄rs=stmt.execu

33、teQuery("select *from record where Rname='"+namevalue+"' or Btitle='"+bookvalue+"'");Vector<String> columnName = new Vector<String>();/字段名Vector<Vector<Object>> dataVector = new Vector<Vector<Object>>();columnName.add(

34、"讀者編號(hào)");columnName.add("圖書編號(hào)"); columnName.add("姓名");columnName.add("書名");columnName.add("借書日期");columnName.add("還書日期");while(rs.next()Vector<Object> vec = new Vector<Object>();for(int i=1;i<=6;i+)vec.add(rs.getObject(i);data

35、Vector.add(vec);model.setDataVector(dataVector, columnName);/設(shè)定模型數(shù)據(jù)和字段con.close();stmt.close();rs.close(); catch(SQLException ex)ex.printStackTrace();stable.setModel(model);/增加功能類class addFrame extends JFrame implements ActionListener private Connection con=null;private Statement stmt=null;/界面設(shè)計(jì)priv

36、ate JLabel borrowlabel = new JLabel("借閱日期");private JTextField borrow = new JTextField(10);private JLabel returnlabel = new JLabel("歸還日期");private JTextField reback = new JTextField(10);private JButton commit = new JButton("確定");private JLabel rnolabel = new JLabel(&quo

37、t;讀者編號(hào)");private JTextField rno = new JTextField(5);private JLabel bnolabel = new JLabel("書編號(hào)");private JTextField bno = new JTextField(5);public addFrame()JPanel p1=new JPanel();p1.setLayout(new GridLayout(4,2);p1.add(rnolabel);p1.add(rno);p1.add(bnolabel);p1.add(bno);p1.add(borrowla

38、bel);p1.add(borrow);p1.add(returnlabel);p1.add(reback);JPanel p2=new JPanel();p2.add(commit);add(p1,BorderLayout.NORTH);add(p2,BorderLayout.CENTER);setSize(300,200);setTitle("增加記錄");commit.addActionListener(this);/為確定按鈕增加監(jiān)聽器/點(diǎn)擊確定按鈕后的相關(guān)操作public void actionPerformed(ActionEvent e)try String

39、rnovalue = rno.getText();String bnovalue = bno.getText();String borrowvalue = borrow.getText();String returnvalue = reback.getText();try Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");System.out.println("成功加載SQL驅(qū)動(dòng)程序");catch(Exception exw)System.out.println("找不

40、到SQL驅(qū)動(dòng)程序");trycon = DriverManager.getConnection("jdbc:sqlserver:/localhost:1433;DatabaseName=Library","sa","xyz");System.out.println("數(shù)據(jù)庫(kù)連接成功");catch(Exception exy)System.out.println("數(shù)據(jù)庫(kù)連接失敗"); stmt = con.createStatement();stmt.executeUpdate(&q

41、uot;insert into Borrow values('"+rnovalue+"','"+bnovalue+"','"+borrowvalue+"','"+returnvalue+"')");/執(zhí)行增加的sql語(yǔ)句con.close();stmt.close(); catch(SQLException ex)ex.printStackTrace();/修改功能的類class modifyFrame extends JFrame impl

42、ements ActionListener private Connection con=null;private Statement stmt=null;/界面設(shè)計(jì)private JLabel findlabel = new JLabel("根據(jù)輸入的讀者編號(hào)和書籍編號(hào)確定修改記錄的位置");private JLabel borrowlabel = new JLabel("借閱日期");private JTextField borrow = new JTextField(10);private JLabel returnlabel = new JLab

43、el("歸還日期");private JTextField reback = new JTextField(10);private JButton commit = new JButton("確定");private JLabel rnolabel = new JLabel("讀者編號(hào)");private JTextField rno = new JTextField(5);private JLabel bnolabel = new JLabel("書編號(hào)");private JTextField bno = new JTextField(5);public modifyFrame()JPanel p1=new JPanel();p1.setLayout(new GridLayout(4,2);p1.add(rnolabel);p1.add(rno);p1.add(bnolabel);p1.add(bno);p1.add(borr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論