JAVAJDBC连接数据库查询添加修改删除.docx

上传人:b****6 文档编号:6507544 上传时间:2023-01-07 格式:DOCX 页数:26 大小:688.83KB
下载 相关 举报
JAVAJDBC连接数据库查询添加修改删除.docx_第1页
第1页 / 共26页
JAVAJDBC连接数据库查询添加修改删除.docx_第2页
第2页 / 共26页
JAVAJDBC连接数据库查询添加修改删除.docx_第3页
第3页 / 共26页
JAVAJDBC连接数据库查询添加修改删除.docx_第4页
第4页 / 共26页
JAVAJDBC连接数据库查询添加修改删除.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

JAVAJDBC连接数据库查询添加修改删除.docx

《JAVAJDBC连接数据库查询添加修改删除.docx》由会员分享,可在线阅读,更多相关《JAVAJDBC连接数据库查询添加修改删除.docx(26页珍藏版)》请在冰豆网上搜索。

JAVAJDBC连接数据库查询添加修改删除.docx

JAVAJDBC连接数据库查询添加修改删除

一实验目的

(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)本实验分两次完成,第一次可以先做一些准备测试,旨在熟悉JDBC API编程接口中相关类的使用方法,测试中可以先基于字符界面实现功能,再逐步过渡到图形界面。

四实验步骤

(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_MESSAGE);//弹出信息对话框。

try

{

con=DriverManager.getConnection("jdbc:

odbc:

sun","","");//连接数据源。

prestmt=con.prepareStatement("DELETEFROMinformationWHEREnumber=?

");

//预处理-删除。

prestmt.setString(1,no);//设置第一个问号的取值

prestmt.executeUpdate();//更新数据。

JOptionPane.showMessageDialog(this,"学号为"+no+"的学生记录已删除!

",

"删除",JOptionPane.INFORMATION_MESSAGE);//弹出操作成功的对话框。

con.close();//关闭连接。

}

catch(SQLExceptionex){System.out.println(e);}

}

elseif(e.getSource()==修改)//执行修改操作。

{

CDialogdia=newCDialog(this,"修改");

//弹出“修改”界面

}

elseif(e.getSource()==清空)//执行清空操作。

{

显示区.setText("");//清空文本框。

}

}

}

classLDialogextendsDialogimplementsActionListener//录入界面。

{

TextField学号,姓名,班级,生日;

JRadioButton男,女;

ButtonGroupgroup=null;

JPanelp1,p2;

Choicechoice;

Button确定,取消;

LDialog(Framef,Strings)

{

super(f,s);

学号=newTextField(10);

姓名=newTextField(10);

班级=newTextField(10);

生日=newTextField(10);

group=newButtonGroup();

男=newJRadioButton("男",true);

女=newJRadioButton("女",false);

group.add(男);

group.add(女);

p1=newJPanel();

p1.add(男);p1.add(女);

choice=newChoice();//新建名为"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);//添加组合框

确定=newButton("确定");

取消=newButton("取消");

确定.addActionListener(this);

取消.addActionListener(this);

p2=newJPanel();

p2.add(确定);

p2.add(取消);

setLayout(newFlowLayout(FlowLayout.LEFT));

add(newLabel("学号:

"));add(学号);

add(newLabel("姓名:

"));add(姓名);

add(newLabel("性别:

"));add(p1);

add(newLabel("班级:

"));add(班级);

add(newLabel("籍贯:

"));add(choice);

add(newLabel("生日:

"));add(生日);

add(p2);

setBounds(200,200,180,260);

setVisible(true);

addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente){

dispose();}});

}

publicvoidactionPerformed(ActionEvente)

{

Connectioncon;

Statementstmt;

ResultSetrs;

PreparedStatementprestmt;

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}

catch(ClassNotFoundExceptionex){}

if(e.getSource()==确定)//执行确定操作。

{

Stringnumber=学号.getText();//获取“学号”文本框内输入的信息。

Stringname=姓名.getText();//获取“姓名”文本框内输入的信息。

Stringsex=null;

if(男.isSelected()){sex=男.getText();}else{sex=女.getText();}

//对于“男”“女”两个单选框的判断,isSelected()被选中。

Stringsclass=班级.getText();//获取“班级”文本框内输入的信息。

Stringnativeplace=choice.getSelectedItem();

//获取“choice”下拉列表选择的信息。

Stringbirthday=生日.getText();//获取“生日”下拉列表选择的信息。

if(number.length()>0&&name.length()>0&&sclass.length()>0)

//判断“学号”“姓名”“班级”文本框内是否输入了信息。

{//“学号”“姓名”“班级”文本框内有信息时,新建stu对象。

try{

con=DriverManager.getConnection("jdbc:

odbc:

sun","","");

//连接数据源

prestmt=con.prepareStatement("INSERTINTOinformationVALUES(?

?

?

?

?

?

)");

//预处理-插入。

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(SQLExceptionex){System.out.println(e);}

学号.setText("");//把“学号”文本框内容清空,以便下次输入。

姓名.setText("");//把“姓名”文本框内容清空,以便下次输入。

班级.setText("");//把“班级”文本框内容清空,以便下次输入。

生日.setText("");//把“生日”文本框内容清空,以便下次输入。

}

else{/*当“学号”“姓名”“班级”文本框内没有输入信息时,则会弹出一个“警告”

窗口,上面显示“请输入信息!

”。

*/

JOptionPane.showMessageDialog(this,"请输入信息!

","Warning",

JOptionPane.WARNING_MESSAGE);//弹出警告对话框。

}

}

else//“取消”按钮。

{dispose();}

}

}

classCDialogextendsDialogimplementsActionListener//修改界面

{

TextField学号,姓名,性别,班级,籍贯,生日;

Button确定,取消;

CDialog(Framef,Strings)

{

super(f,s);

学号=newTextField(10);

姓名=newTextField(10);

性别=newTextField(10);

班级=newTextField(10);

籍贯=newTextField(10);

生日=newTextField(10);

确定=newButton("确定");

取消=newButton("取消");

确定.addActionListener(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1