




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
千里之行,始于足下讓知識帶有溫度。第第2頁/共2頁精品文檔推薦java連接數(shù)據(jù)庫課程設計*******高校
同學試驗報告
試驗課程名稱J2EE及JAVA程序設計
開課試驗室DS1501
學院軟件學院年級2022專業(yè)班2班
同學姓名學號
開課時光2022至2022學年第2學期
總成果
老師簽名
軟件學院制
《J2EE及JAVA程序設計》試驗報告
開課試驗室:DS15012022年6月18日學院軟件學院軟工2班姓名成果
課程名稱J2EE及JAVA程序設
計
試驗項目
名稱
試驗6-8:圖形界面編程、
抽象類與接口、數(shù)據(jù)庫。
指導老師
老師
評語老師簽名:
2022年代日
一、試驗目的
試驗六:基本把握使用JAVA來完成基本的圖形界面等調試與編程,實現(xiàn)理論課上敘述的內容PPT內容的驗證。
試驗七:把握抽象類與接口的概念,驗證代碼,能寫小程序。
試驗八:把握利用JAVA完成數(shù)據(jù)庫課程中的基本數(shù)據(jù)記錄操作。
二、試驗內容
試驗六內容:
調試,驗證,課件ppt內容,課后布置的作業(yè)(試驗報告內容中可不寫)。
試驗七內容:
完成教材12章關于抽象類與接口方面的范例內容的代碼驗證、后面作業(yè)的代碼設計(試驗報告中可不寫)。
試驗八內容:(二選一,提交該部分試驗報告內容)
1)利用圖形界面編程,實現(xiàn)C/S模式的數(shù)據(jù)庫拜訪操作。完成SQLSERVER或
MYSQL數(shù)據(jù)庫管理系統(tǒng)的安裝,配置,JAVA數(shù)據(jù)庫拜訪環(huán)境的配置;完成
數(shù)據(jù)庫表的建立,記錄插入等;建立用戶表,包含用戶名、密碼字段;利用
JAVA實現(xiàn)圖形界面,用戶登錄驗證,進入軟件運行后,針對某表記錄的增、
刪、改、查操作。
2)完成JAVAWEB應用開發(fā),實現(xiàn)B/S模式的數(shù)據(jù)庫拜訪操作。完成SQLSERVER
或MYSQL數(shù)據(jù)庫管理系統(tǒng)的安裝,配置,JAVA數(shù)據(jù)庫拜訪環(huán)境的配置,
Tomcat服務器安裝配置;完成數(shù)據(jù)庫表的建立,記錄插入等;建立用戶表,
包含用戶名、密碼字段;利用JAVA實現(xiàn)WEB應用,通過掃瞄器拜訪WEB舉行
用戶登錄驗證,進入WEB應用運行后,針對某表記錄的增、刪、改、查操作。
三、使用儀器、材料
JAVASEJDK1.7.55
Tomcat
Sqlserver
四、試驗過程原始記錄(數(shù)據(jù)、圖表、計算等):
以下是我所銜接的數(shù)據(jù)庫表結構,Book表是存儲圖書信息的,Reader表是存儲讀者信息的,Borrow表是存儲借閱記錄的,User表是存儲用戶登錄取戶名和密碼的。
為了不裸露表結構和只顯示用戶需要的信息,建立了一個視圖record
下面是用java銜接數(shù)據(jù)庫的過程:
首先下載java銜接sql數(shù)據(jù)庫的驅動程序,配置環(huán)境。
下面是囫圇程序演示過程截圖:
1.登錄界面
首先是登錄界面
用戶名或密碼錯誤彈出登錄失敗消息框
2.初始界面
正確后進入初始界面,從視圖中讀取的數(shù)據(jù)庫信息
3.增強功能
點擊增強按鈕彈出增強記錄對話框
輸入增強記錄的信息后點擊確定,再回到初始界面點擊刷新按鈕,可以看到剛增強的記錄已經顯示在初始界面中。
4.修改功能
點擊修改按鈕,彈出修改記錄對話框
按照輸入的讀者編號和圖書編號確定修改的是哪條記錄,填入修改的信息后點擊確定,回到初始界面點擊刷新,可以看到修改的記錄已修改掉
5.查詢功能
點擊查詢按鈕彈出搜尋記錄對話框
輸入姓名點擊確定就會在下面顯示此姓名的相關記錄
輸入書名也可以查詢此書相關的記錄
6.刪除功能,可以單行刪除也可以多行刪除
首先單行刪除,選中一行后點擊刪除按鈕就可以刪除此條記錄,而且數(shù)據(jù)庫也相應地刪除了此條記錄,通過點擊刷新再重新讀取數(shù)據(jù)庫數(shù)據(jù)可以證實
刪除前
刪除后
多行刪除,選中多行后點擊刪除刪除前
刪除后
點擊刷新后
以上就是囫圇程序演示過程
碰到的問題:
1.借書日期和還書日期以date類型顯示到界面中總會少兩天,不知道為什么,所以我把date
類型改為了char類型,然后就正常了。
2.開頭寫刪除多行的時候,我是寫的刪除數(shù)據(jù)庫的信息并一起刪掉JTable中的信息,但是因為
在刪除JTable中信息時最開頭得到的序號和刪除一行后序號削減了,于是會浮現(xiàn)越界的錯誤,于是我改為了刪除數(shù)據(jù)庫信息后再調用讀取數(shù)據(jù)庫信息的函數(shù)舉行了刷新就沒問題了。
下面是銜接數(shù)據(jù)庫并舉行相關操作的源代碼
importjava.sql.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.table.*;
importjava.util.*;
//登錄界面的類,也是初始類
publicclassConnectionDatabaseextendsJFrameimplementsActionListener{privateConnectioncon=null;//銜接數(shù)據(jù)庫
privateStatementstmt=null;//執(zhí)行數(shù)據(jù)庫sql語句
privateResultSetrs=null;//存儲數(shù)據(jù)庫查詢結果
intif_success=0;//推斷是否登錄勝利
//登錄界面的設置
privateJLabelnamelabel=newJLabel("用戶名");
privateJTextFieldname=newJTextField(10);
privateJLabelpasslabel=newJLabel("密碼");
privateJTextFieldpwd=newJTextField(30);
privateJButtoncommit=newJButton("登錄");
publicConnectionDatabase(){
JPanelp1=newJPanel();
p1.setLayout(newGridLayout(2,2,5,20));
p1.add(namelabel);
p1.add(name);
p1.add(passlabel);
p1.add(pwd);
JPanelp2=newJPanel();
p2.add(commit,BorderLayout.SOUTH);
add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.CENTER);
setSize(300,200);
setTitle("登錄界面");
commit.addActionListener(this);//為登錄按鈕增強監(jiān)聽器
}
//主函數(shù),顯示登錄界面
publicstaticvoidmain(String[]args){
ConnectionDatabaselogin=newConnectionDatabase();
login.setLocationRelativeTo(null);
login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
login.setVisible(true);
}
//點擊按鈕登錄后推斷用戶名和密碼是否正確,是否允許登錄進去
publicvoidactionPerformed(ActionEvente){
try{
Stringsname=name.getText();
Stringspwd=pwd.getText();
//銜接數(shù)據(jù)庫
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("勝利加載SQL驅動程序");
}
catch(Exceptionexw){
System.out.println("找不到SQL驅動程序");
}
try{
con=DriverManager.getConnection
("jdbc:sqlserver://localhost:1433;DatabaseName=Library","sa","xyz123456");
System.out.println("數(shù)據(jù)庫銜接勝利");
}
catch(Exceptionexy){
System.out.println("數(shù)據(jù)庫銜接失敗");
}
//執(zhí)行sql語句,查詢出用戶名和密碼
stmt=con.createStatement();
rs=stmt.executeQuery("selectname,passwordfrom[User]");
//推斷用戶名和密碼是否正確
while(rs.next()){
if(sname.equals(rs.getString("name"))&&
spwd.equals(rs.getString("password")))
if_success=1;
}
rs.close();
if(if_success==1){//正確則進入初始界面
readFrameframe=newreadFrame();
frame.setVisible(true);
}
else{
JOptionPane.showMessageDialog(null,"登錄失??!");
}
}catch(SQLExceptionex){
ex.printStackTrace();
}
}
}
//從數(shù)據(jù)庫中讀入視圖中的記錄初始界面
classreadFrameextendsJFrame{
privatestaticConnectioncon=null;
privatestaticStatementstmt=null;
privatestaticResultSetrs=null;
//界面設置
privateJButtonsearch=newJButton("查詢");
privateJButtonadding=newJButton("增強");
privateJButtondelete=newJButton("刪除");
privateJButtonmodify=newJButton("修改");
privateJButtonfresh=newJButton("刷新");
privatestaticJTabletable=newJTable();//JTable用于顯示記錄
privatestaticDefaultTableModeltmhavesold=newDefaultTableModel();//建立默認的JTable模型
publicreadFrame(){
setTitle("圖書借還記錄");
setSize(600,500);
JPanelp1=newJPanel();//創(chuàng)建面板p1放置四個按鈕.
p1.setLayout(newGridLayout(1,5));
p1.add(adding);
p1.add(delete);
p1.add(modify);
p1.add(search);
p1.add(fresh);
add(p1,BorderLayout.NORTH);
JScrollPanep2=newJScrollPane
(table,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
this.getContentPane().add(p2,BorderLayout.CENTER);
//點擊查詢按鈕顯示查詢對話框
search.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente1){
JFramequeryFrame=newsearchFrame();
queryFrame.setVisible(true);
}
});
//點擊增強按鈕顯示增強對話框
adding.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente2){
JFrameaddingFrame=newaddFrame();
addingFrame.setVisible(true);
}
});
//點擊刷新按鈕從數(shù)據(jù)庫中重新讀入數(shù)據(jù)
fresh.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente3){
read();//從數(shù)據(jù)庫視圖中讀入數(shù)據(jù)
}
});
//點擊修改按鈕彈出修改記錄對話框
modify.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente4){
JFramemyframe=newmodifyFrame();
myframe.setVisible(true);
}
});
//點擊刪除按鈕后的操作
delete.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente5){
intselectRows=table.getSelectedRows().length;//取得用戶所選行的行數(shù)
DefaultTableModeltableModel=(DefaultTableModel)table.getModel();//得到jtable中的數(shù)據(jù)
try{
ConnectData();//銜接數(shù)據(jù)庫
stmt=con.createStatement();
if(selectRows==1){//假如選中單行
intselectedRowIndex=table.getSelectedRow();//取得用戶所選單行
//得到選中行的Rno和Bno值
StringcellValue1=(String)tableModel.getValueAt(selectedRowIndex,0);
StringcellValue2=(String)tableModel.getValueAt(selectedRowIndex,1);
stmt.execute("deletefromBorrowwhereRno='"+cellValue1+"'and
Bno='"+cellValue2+"'");//按照Rno和Bno的值刪除數(shù)據(jù)庫表Borrow中此行記錄
tableModel.removeRow(selectedRowIndex);//從JTable中刪除此行}
elseif(selectRows>1){//選中多行
int[]selRowIndexs=table.getSelectedRows();//得到多行的行號
for(inti=0;icolumnName=newVector();//字段名
Vector>dataVector=newVector>();//存儲rs中從數(shù)據(jù)庫中查出的數(shù)據(jù)
columnName.add("讀者編號");
columnName.add("圖書編號");
columnName.add("姓名");
columnName.add("書名");
columnName.add("借書日期");
columnName.add("還書日期");
while(rs.next()){//把rs中的數(shù)據(jù)賦給dataVector
Vectorvec=newVector();
for(inti=1;icolumnName=newVector();//字段名
Vector>dataVector=newVector>();
columnName.add("讀者編號");
columnName.add("圖書編號");
columnName.add("姓名");
columnName.add("書名");
columnName.add("借書日期");
columnName.add("還書日期");
while(rs.next()){
Vectorvec=newVector();
for(inti=1;i<=6;i++){
vec.add(rs.getObject(i));
}
dataVector.add(vec);
}
model.setDataVector(dataVector,columnName);//設定模型數(shù)據(jù)和字段
con.close();
stmt.close();
rs.close();
}catch(SQLExceptionex){
ex.printStackTrace();
}
stable.setModel(model);
}
}
//增強功能類
classaddFrameextendsJFrameimplementsActionListener{privateConnectioncon=null;
privateStatementstmt=null;
//界面設計
privateJLabelborrowlabel=newJLabel("借閱日期");
privateJTextFieldborrow=newJTextField(10);
privateJLabelreturnlabel=newJLabel("歸還日期");
privateJTextFieldreback=newJTextField(10);
privateJButtoncommit=newJButton("確定");
privateJLabelrnolabel=newJLabel("讀者編號");
privateJTextFieldrno=newJTextField(5);
privateJLabelbnolabel=newJLabel("書編號");
privateJTextFieldbno=newJTextField(5);
publicaddFrame(){
JPanelp1=newJPanel();
p1.setLayout(newGridLayout(4,2));
p1.add(rnolabel);
p1.add(rno);
p1.add(bnolabel);
p1.add(bno);
p1.add(borrowlabel);
p1.add(borrow);
p1.add(returnlabel);
p1.add(reback);
JPanelp2=newJPanel();
p2.add(commit);
add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.CENTER);
setSize(300,200);
setTitle("增強記錄");
commit.addActionListener(this);//為確定按鈕增強監(jiān)聽器
}
//點擊確定按鈕后的相關操作
publicvoidactionPerformed(ActionEvente){
try{
Stringrnovalue=rno.getText();
Stringbnovalue=bno.getText();
Stringborrowvalue=borrow.getText();
Stringreturnvalue=reback.getText();
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("勝利加載SQL驅動程序");
}
catch(Exceptionexw){
System.out.println("找不到SQL驅動程序");
}
try{
con=DriverManager.getConnection
("jdbc:sqlserver://localhost:1433;DatabaseName=Library","sa","xyz123456");
System.out.println("數(shù)據(jù)庫銜接勝利");
}
catch(Exceptionexy){
System.out.println("數(shù)據(jù)庫銜接失敗");
}
stmt=con.createStatement();
stmt.executeUpdate("insertintoBorrowvalues('"+rnovalue+"','"+bnovalue+"','"+borrowvalue
+"','"+returnvalue+"')");//執(zhí)行增強的sql語句
con.close();
stmt.close();
}catch(SQLExceptionex){
ex.printStackTrace();
}
}
}
//修改功能的類
classmodifyFrameextendsJFrameimplementsActionListener{privateConnectioncon=null;
privateStatementstmt=null;
//界面設計
privateJLabelfindlabel=newJLabel("按照輸入的讀者編號和書籍編號確定修改記錄的位置");
privateJLabelborrowlabel=newJLabel("借閱日期");
privateJTextFieldborrow=newJTextField(10);
privateJLabelreturnlabel=newJLabel("歸還日期");
privateJTextFieldreback=newJTextField(10);
privateJButtoncommit=newJButton("確定");
privateJLabelrnolabel=newJLabel("讀者編號");
privateJTextFieldrno=newJTextField(5);
privateJLabelbnolabel=newJLabel("書編號");
privateJTextFieldbno=newJTextField(5);
publicmodifyFrame(){
JPanelp1=newJPanel();
p1.setLayout(newGridLayout(4,2));
p1.add(rnolabel);
p1.add(rno);
p1.add(bnolabel);
p1.add(bno);
p1.add(borrowlabel);
p1.add(borrow);
p1.add(returnlabel);
p1.add(reback);
JPanelp2=newJPanel();
p2.add(commit);
JPanelp3=newJPanel();
p3.add(findlabel);
add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.CENTER);
add(p3,BorderLayout.SOUTH)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- D打印技術在個性化教育資源的開發(fā)考核試卷
- 期刊出版論文的開源出版趨勢考核試卷
- 教育音像制品策劃與制作考核試卷
- 文具行業(yè)個性化服務考核試卷
- 工業(yè)園區(qū)電動汽車充電需求分析考核試卷
- 健康生活方式與營養(yǎng)健康考核試卷
- 個人培訓課件大全
- 買杭州新房合同范本
- 私人店鋪租賃合同范本
- 2025屆吉林省吉林地區(qū)高三上學期二模英語試題及答案
- 2024轉向節(jié)設計標準
- 一年級《讀讀兒歌和童謠》線上閱讀測試專項測試題附答案
- 強化學習在支付風控
- 工商企業(yè)管理畢業(yè)論文范文(4篇)
- 重癥醫(yī)學科相關技術規(guī)范與操作規(guī)程
- DB11∕T 1326-2016 中小學校晨午檢規(guī)范
- 北師大版(三起)(2024)三年級上冊英語Unit 2 School life單元測試卷(含答案)
- 兩癌篩查宣傳課件
- 《跨境直播運營》課件-跨境直播的概念和發(fā)展歷程
- 施工現(xiàn)場安全隱患檢查表
- DLT5461-2013 火力發(fā)電廠施工圖設計文件深度規(guī)定(第1-16部分)
評論
0/150
提交評論