JDBC基础一

JDBC:java database connectivity SUN公司提供的一套操作数据库的标准规范。

JDBC与数据库驱动的关系:接口与实现的关系。

JDBC规范(掌握四个核心对象):

DriverManager:用于注册驱动

Connection: 表示与数据库创建的连接

Statement: 操作数据库sql语句的对象

ResultSet: 结果集或一张虚拟表

实体类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.mf.domain;
import java.util.Date;
 
public class User {
private int id;
private String name;
private int age;
private Date createtime;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
public Date getCreatetime() {
    return createtime;
}
public void setCreatetime(Date createtime) {
    this.createtime = createtime;
}
     
}

CRUD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package com.mf.jdbc;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.mf.domain.User;
public class CRUD {
    public static void  main(String[] args) throws Exception  {
        //3种连接方式
        Connection conn=null;
        //得到执行sequel语句的对象Statement
        Statement stmt=null;
        //查 执行sql语句,并返回结果
        ResultSet rs=null;
        try {
            //注册驱动
            //DriverManager.registerDriver(new com.mysql.jdbc.Driver());//不建议使用原因有2个:> 导致驱动被注册2次。> 强烈依赖数据库的驱动jar
            Class.forName("com.mysql.jdbc.Driver");//此处采用反射机制加载
            //获取连接Connection //Connection 接口   多态   父类的壳子接收子类的实现,有利于后期代码的扩展
             
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
             
            /*Properties  info=new Properties();
            info.setProperty("user", "root");
            info.setProperty("password", "root");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", info);*/
             
            //Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=root");
             
            stmt = conn.createStatement();
             
            //增
            /*stmt = conn.prepareStatement("INSERT INTO users VALUES(?,?)");
            ((PreparedStatement) stmt).setString(1, "tom");
            ((PreparedStatement) stmt).setInt(2, 5);*/
             
            /*int i = stmt.executeUpdate("INSERT INTO USER (`Name`, `Age`) VALUES('mf',20)");
            if(i>0){
                System.out.println("success");
            }
            //删
            int j = stmt.executeUpdate("UPDATE USER SET Age=25 WHERE ID=1");
            if(j>0){
                System.out.println("success");
            }
            //改
            int k = stmt.executeUpdate("DELETE  FROM  USER   WHERE ID = 1 ");
            if(k>0){
                System.out.println("success");
            }*/
             
            rs = stmt.executeQuery("select * from user");
            //处理结果
            List<User> list=new ArrayList<User>();
            while(rs.next()){
                User user=new User();
                user.setName(rs.getString("Name"));
                user.setAge(rs.getInt("Age"));
                user.setCreatetime(rs.getDate("CreatTime"));
                list.add(user);
                System.out.println(list.size());
                System.out.println("---------------------------------------------------");
                System.out.println(rs.getObject("Name")+":"+rs.getObject("Age")+":"+rs.getObject("CreatTime"));
                 
            }
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally{
            //关闭资源
            if(rs!=null)
            {
             try {
                rs.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
             rs=null;
            }
            if(stmt!=null)
            {
                try {
                    stmt.close();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                stmt=null;
            }
            if(conn!=null)
            {
                try {
                    conn.close();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                conn=null;
            }  
        }
    }  
}

 

  

 

posted @   ~沐风  阅读(180)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示