实训课题:Java数据库操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实训课题:Java数据库操作
实训目标:
(1)掌握如何通过JDBC连接数据库。
(2)通过Java语言对数据库进行操作——删除、添加、修改、查询。
(3)掌握java.sql包中各对象的常用方法和键盘输入方法。
重点与难点:
掌握java.sql包中各对象的常用方法和键盘输入方法
实训方法:
任务驱动+现场演示分析
实训过程:
【实训流程分析】
•分析:下面例程结合JDBC、SQL语句和键盘输入。
该程序是有关学生的信息记录系统,与程序连接的数据库中存在一个表student,它共有三个字段:id(学号)、name(姓名)、age(年龄),类型分别为String,String,Integer。
•该系统有如下功能:删除、添加、修改、查询。
运行程序后通过键盘输入索引值来调用对应的功能,并根据提示进行操作。
•程序流程如下图所示。
要执行这个程序,首先要连接一个已存在的Access数据库student,再用前面介绍的方法,在ODBC数据源中添加一个数据源studentData,如下图所示。
【参考源代码】
/**
*filename:Student.java
*@author:SeeKing(HuNan)Co.,Ltd.伍凌
*@version:v
*/
import java.sql.*;
import java.io.*;
public class Student {
Connection con;
PreparedStatement pstmt;
Statement stmt;
BufferedReader in = null;
// 定义为BufferedReader,可以调用readLine()读整行的输入
ResultSet rs;
public Student() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 加载驱动程序} catch (ClassNotFoundException ee) { // 没有该驱动程不存在
ee.printStackTrace(); // 输出错误信息
}
try {
con = DriverManager.getConnection("jdbc:odbc:studentData");
// 连接数据库
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
// ResultSet.CONCUR_UPDATABLE);//光标可前后滚动,数据可修改
pstmt = con.prepareStatement("insert into student "
+ "values(?,?,?)"); // 创建PreparedStatement对象
// 用BufferedReader来包装键盘输入流以便可读整行输入
in = new BufferedReader(new InputStreamReader(System.in));
for (;;) {
System.out.println("增加记录 1;显示记录 2;删除记录 3;修改记录 4 );
高等职业教育计算机类专业程序设计语言系列课程《Java基础教案》
String inStr = in.readLine(); // 读入键盘输入
if (inStr.equals("1")) { // 调用新增记录函数
insertData();
} else if (inStr.equals("2")) { // 调用查询所有记录函数
selectData();
} else if (inStr.equals("3")) { // 调用删除记录函数
deleteData();
} else if (inStr.equals("4")) { // 调用修改记录函数
updateData();
} else { // 按其他键则退出
break;
}
}
in.close(); // 关闭数据流
stmt.close(); // 将Statement所占有的资源释放掉
pstmt.close(); // 将PreparedStatement所占有的资源释放掉
con.close(); // 关闭与数据库的连接,同时把占用的资源释放掉
} catch (Exception e) { // 发生异常时,进行异常处理
System.out.println(e);
}
}
public static void main(String args[]) { // 主函数
new Student();
}
public void insertData() { // 调用新增记录函数
String str;
try {
System.out.print("请输入学号:");
str = in.readLine(); // 读入键盘输入
pstmt.setString(1, str); // 设置SQL语句中的三个参数的值
System.out.print("请输入姓名:");
str = in.readLine(); // 读入键盘输入
pstmt.setString(2, str);
System.out.print("请输入年龄:");
str = in.readLine();
int age = Integer.parseInt(str); // 转换成整型
pstmt.setInt(3, age);
pstmt.executeUpdate(); // 执行该SQL语句
System.out.println("信息增加成功\n");
} catch (Exception e) { // 数据流in与pstmt都要进行异常处理,否则编译不过
e.printStackTrace();
}
}
public void selectData() { // 调用查询所有记录函数
湖南同德职业学院计算机系软件技术教研室伍凌编写
try {
System.out.print("学生信息如下:\n");
rs = stmt.executeQuery("select * from student");
// 调用SQL语句查询所有记录
while (rs.next()) { // 输出每条记录
System.out.println(rs.getString(1) + " " + rs.getString(2) + ""
+ rs.getInt(3));
}
rs.close(); // 关闭rs以释放资源
} catch (SQLException e) { // 执行SQL语句可能会产生异常
e.printStackTrace();
}
}
public void deleteData() { // 调用删除记录函数
String str;
try {
System.out.print("输入要删除信息的学生学号:");
str = in.readLine(); // 读入键盘输入
int i = 0;
// 执行该SQL语句返回处理的记录的个数
i = stmt
.executeUpdate("delete from student where id='" + str + "'");
if (i == 1) // 当处理一个表示该学生记录存在
System.out.println("信息删除成功\n");
else
// 没有处理时表示该学生记录不存在
System.out.println("没有该学生信息\n");
} catch (Exception e) { // 执行SQL语句和键盘输入时要进行异常处理System.out.print("删除失败\n" + e);
}
}
public void updateData() { // 调用修改记录函数
System.out.print("输入修改信息的学号:");
String str;
try {
str = in.readLine(); // 读入键盘输入
rs = stmt.executeQuery("select * from student where id='" + str
+ "'");
// 查找学生记录
if (!rs.next()) { // 如果没有该学生
System.out.println("没有该学生信息");
return; // 不继续做下面的代码
}
rs.previous(); // 上面语句使光标到了记录的后面,因此要使光标向前
高等职业教育计算机类专业程序设计语言系列课程《Java基础教案》
while (rs.next()) { // 输出该学生记录
System.out.println(rs.getString(1) + " " + rs.getString(2)
+ " " + rs.getInt(3));
}
rs.previous(); // 上面的循环使光标到了记录的后面,因此要使光标向前
System.out.print("输入要修改的列的索引:");
int index = 0;
index = Integer.parseInt(in.readLine()); // 类型转换
System.out.print("输入新值:");
str = in.readLine();
if (index == 3) { // 如果是改变年龄的值则要进行类型转换
rs.updateInt(index, Integer.parseInt(str));
} else {
rs.updateString(index, str);
}
rs.updateRow(); // 将该记录的修改写进数据库
System.out.println("修改成功");
rs.close();
} catch (Exception e) { // 执行SQL语句和键盘输入时要进行异常处理
e.printStackTrace();
}
}
}
【运行结果】
程序执行后首先会显示如下图所示的界面。
添加一条学生信息:学号—“2”、姓名—“王五”、
年龄—20,则输入1然后回车,再根据提示输入记
录信息。
如下图所示。
湖南同德职业学院计算机系软件技术教研室伍凌编写
【知识小结】
本堂课为数据库操作实训练习。
应能掌握Java数据库连接,以及Java数据库数据操作,如数据的增加等。