一、实验项目要求
实验目的
1.理解JDBC与SQL等网络数据库的连接机制
2.掌握JDBC API的使用
3. 掌握JDBC实现数据库基本操作
实验内容
- 编写程序创建一个职工数据表,内容如下:
职工号 | 姓名 | 性别 | 工资 | 职称 |
1001 | 丁卫国 | 男 | 650 | 助工 |
1002 | 张小华 | 女 | 1000 | 工程师 |
1003 | 宁涛 | 男 | 2500 | 高工 |
要求:(1)创建职工表;
(2)向职工表中插入三条记录,如上表所示;并查询所有职工信息,输出到控制台。
(3)更新职工表:将每个人的工资加50后存入原表中;并查询更新后的所有员工信息,输出到控制台。
二、实验环境
Ecplise
三、理论分析或算法分析
实验步骤
- 复习有关类的相关内容;
- 根据题目要求编写程序;
- 分析实验结果。
逻辑分析
问题1
(1)使用nacivat创建一个work表,不使用控制窗口创建,记住自己创建的位置以及密码,然后加载驱动器,连接数据库,Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/tit201902?characterEncoding=utf8&useUnicode=true";Connection connection= DriverManger.getConnection(url,”root”,”root”),建立一个可以把数据添加进去的的东西;
(2)建立一个类是work,可以将数据从键盘输进去,但是每次只能输入一个数据,所以要输入三次,添加完成后,可以在nacivat里面查看到已经插入的数据,在控制台输出数据;
(3)建立一个类是updata,把工资更新,在原有的基础上可以加50,然后将信息输出到控制台上;
(4)对代码进行测试,每次输入记录就需要重新运行一遍,把记录按表中的内容加入表中,然后运行一次,查询信息书橱到控制台上,然后最后进行更新处理,最终实现目的;
四、实现方法
问题1
建立一个可以插入记录的类,并且输出到控制台
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
import com.mysql.jdbc.Statement;
public class Work {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
System.out.println("请输入要添加的职工号: 姓名: 性别: 工资: 职称:");
String id = sc.next();
String name = sc.next();
String sex = sc.next();
String money = sc.next();
String work = sc.next();
//连接数据库
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/tit201902?characterEncoding=utf-8&useUnicode=true";
Connection con = DriverManager.getConnection(url,"root","root");
String sql = "INSERT INTO work VALUES(?,?,?,?,?)";
Statement st = (Statement) con.createStatement();
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, name);
pstmt.setString(3, sex);
pstmt.setString(4, money);
pstmt.setString(5, work);
int flag = pstmt.executeUpdate();
if(flag==0) {
System.out.println("添加失败!");
}
else {
System.out.println("添加成功!");
}
String s = "select * from work";
//把职工信息输出到屏幕上
ResultSet result = st.executeQuery(s);
System.out.println("--------------员工信息-----------");
System.out.println("职工号 姓名 性别 工资 职称");
while(result.next()) {
System.out.println(result.getString("职工号")+"\t"+
result.getString("姓名")+"\t"+
result.getString("性别")+"\t"+
result.getString("工资")+"\t"+
result.getString("职称")
);
}
//释放资源
con.close();
}
}
建立一个可以将工资更新,在原有的基础上加50
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Statement;
public class Update {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/tit201902?characterEncoding=utf-8&useUnicode=true";
//创建连接(与数据源进行连接)
Connection con = DriverManager.getConnection(url,"root","root");
//建立Statement类的对象
Statement st = (Statement) con.createStatement();
//建立PreparedStatement类的对象
//更新工资,将工资增加50
PreparedStatement ps = con.prepareStatement("update work set 工资=工资+50");
//执行SQL命令
ps.executeUpdate();
//查询更新后的职工信息
String s = "select * from work";
//把职工信息输出到屏幕上
ResultSet result = st.executeQuery(s);
System.out.println("--------------员工信息-----------");
System.out.println("职工号 姓名 性别 工资 职称");
while(result.next()) {
System.out.println(result.getString("职工号")+"\t"+
result.getString("姓名")+"\t"+
result.getString("性别")+"\t"+
result.getString("工资")+"\t"+
result.getString("职称")
);
}
//释放数据库及JDBC资源
ps.close();
st.close();
//关闭与数据库的连接
con.close();
}
}
五、实验结果分析
问题1调试结果
插入第一条数据的结果
插入三条数据并且输出到控制台的结果
工资更新后的结果
所遇问题以及处理方法
- 建立表的时候,连接数据库和加载驱动的时候,位置一定要正确,如果不正确,就找不到相应的表,就会报错;
- 在输入记录的时候,使用executeUpdate(),在输出到屏幕的时候使用的是executeQuery(s),在这里注意用的更新语句不一样,否则最后运行的时候会出错;
- 输入和添加和更新语句不一样,要多进行熟悉;
- 在码代码的过程中,经常会出现红线报错,一个一个搜索去解决,不要太着急,否则什么也做不出来,要多看代码,进行长时间的练习,这样就可以熟悉了;
- 多看书,多码代码。