实习的第二天主要学习了jdbc,老师带着我们在IDEA中写了在数据库中增删查改的代码以及如何优化自己的代码。
TestUser类
先在数据库中建立一个新的表格java7,并在java7中进行增加和查询看是否成功
学会熟练使用一些快捷键:
万能键 ALT + Enter
自动补充 Alter + Ctrl + V
注释快捷键 CTRL + /
public class TestUser {
//测试增加 查询
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
//1.获取驱动 万能键 ALT + Enter
//自动补充 Alter + Ctrl + V
Class.forName("com.mysql.jdbc.Driver");
//2.创建连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/java7?useSSL=true&characterEncoding=utf-8" +
"&user=root&password=123");
System.out.println("数据库连接成功" + conn);
//3.编写sql语句, 注释快捷键 CTRL + /
// String sql = "insert into tb_user(username,password) values(?,?)";
String sql = "select * from tb_user";
//获取存放sql对象
pstm = conn.prepareStatement(sql);
//5.填坑
// pstm.setString(1,"张三");
// pstm.setString(2,"123456");
rs = pstm.executeQuery();
//执行sql语句,得到结果
// int i = pstm.executeUpdate();
//6.遍历结果
while(rs.next()){
System.out.println("用户ID:" + rs.getInt(1));
System.out.println("用户名:" + rs.getString(2));
System.out.println("用户密码:" + rs.getString(3));
}
} catch (Exception e) {
if(rs != null){
try {
rs.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
else if(pstm != null){
try {
pstm.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}else if(conn != null){
try {
conn.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
}
}
User类
是一个实体类,用来映射数据库
主要分为四步:
1.对属性的封装
2.get and set(可以自动生成,右键generate – getter and setter)
3.构造方法(可以自动生成,右键generate – constructor)
4. toString 方法的重写(可以自动生成,右键generate – toString())
public class User {
//1.对属性的封装
private int id;
private String username;
private String password;
//2.get and set
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//3.构造方法
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public User() {
}
//4. toString 方法的重写
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
DBUtil类
这个类里封装了一些在数据库中操作需要用到的方法
public class DBUtil {
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/java7?useSSL=true&characterEncoding=utf-8";
private static String user = "root";
private static String password = "123";
static {
//1.获取驱动
try {
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
//2.创建连接
public static Connection get_Conn() throws SQLException {
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println("数据库连接成功" + conn);
return conn;
}
public static void get_CloseConn(ResultSet rs, PreparedStatement pstm, Connection conn) throws SQLException {
if(rs != null){
rs.close();
}
if(pstm != null){
pstm.close();
}
if(conn != null){
conn.close();
}
}
}
并且包含了一个主函数来进行白盒测试(写在代码里的都叫白盒测试)
public static void main(String[] args) {
try {
get_Conn();
} catch (SQLException e) {
e.printStackTrace();
}
}
TestUser2类
将TestUser实现的功能通过使用DBUtil里方法再实现一次
在调用构造函数时因为只有两个变量,而之前写的构造函数需要三个变量,所以我们需要编写一个新的只需两个变量的构造函数供使用
public class TestUser2 {
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
public void addUser(User user){
try {
// 1. 获取连接
conn = DBUtil.get_Conn();
// 2. 获取存放sql语句的对象
pstm = conn.prepareStatement("insert into tb_user(username, password) values(?,?) ");
// 3. 填坑
pstm.setString(1, user.getUsername());
pstm.setString(2, user.getPassword());
// 4. 执行sql并得到结果
int i = pstm.executeUpdate();
// 5. 处理结果
if (i > 0) {
System.out.println("增加成功");
} else {
System.out.println("增加失败");
}
}catch(Exception e){
e.printStackTrace();
}finally{
// 6. 关闭连接
try {
DBUtil.get_CloseConn(null, pstm, conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args){
TestUser2 t2 = new TestUser2();
User user = new User("李思虎","789789");
t2.addUser(user);
}
今天的内容主要是了解并使用jdbc,并通过编写在数据库中的增删查改来实践如何使用jdbc