JDBC是Java语言中用来规范客户端程序如何来访问数据的应用程序接口,也就是实现了能让Java程序连接到数据库并进行一系列操作,如:增删查改。在开始之前,需要从各数据库官网下载驱动程序,然后导入到开发环境中。
先试想,要想对一个东西有所操作,是不是得先连接上这个东西,换句话说就是,与这个东西产生某种持久的联系,而这个东西就是数据库。这其实和网络通信中的Socket和ServerSocket的建立思路是一样的。
一、获得连接对象
public Connection getConnection() throws Exception{
//加载Mysql数据库的驱动
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://数据库URL地址:3306/要使用的数据库名", "账号", "密码");
return connection;
}
加载驱动这里提一下:目前有很多数据库,都有各自的连接方法,Java不太可能为每个数据库量身定制一套方法,就制定了一套连接数据库的接口,让各个厂商去实现这个接口,所以需要在一开始就把数据库对应厂商的驱动程序加载到系统内存中,然后就可以利用DriverManager获取到连接,从而实现让Java程序和数据库建立连接
二、执行SQL语句
数据库中的一行数据对应Java中的一个对象
先定义一个对象
public class User {
private int ID;
private String name;
public User(int ID,String name){
this.ID = ID;
this.name = name;
}
public User(){
}
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "ID=" + ID + " name=" + name + "]\r\n";
}
}
1.查询
//用一个容器来保存查询到的用户对象
public List<User> getUser() throws Exception(){
String sql = String sql = "select * from test1 ;";
System.out.println("要执行的查询语句为"+sql);
Connection conn = getConnection();
System.out.println("得到连接对象");
List<User> list = new ArrayList();
//Statement对象用于执行一条静态的sql语句并获取它产生的结果,也就是给连接上的数据库发送sql语句
Statement stmt = conn.createStatement();
/*
* resuletset是数据库结果集的数据表,由executeQuery()语句生成
* resuletset对象保持一个光标指向当前数据行,最初光标指向第一行之前,然后用next()方法将光标移动到下一行
* 并且在resuletset对象中没有更多的返回行时返回false
*/
ResultSet rs = stmt.executeQuery(sql);
System.out.println("sql语句执行完成");
while(rs.next()) {
User u = new User();
//在使用ResultSet对象的get方法时,需要事先知道各列对应的数据类型,也就是需要知道,想要的数据在第几列
u.setID(rs.getInt(1));
u.setName(rs.getString(2));
list.add(u);
}
return list;
}
2.插入
public void saveUser(User u) throws Exception {
String sql = "insert into test1 (id,name) values("+u.getID()+",'"+u.getName()+"');";
System.out.println("执行的sql为"+sql);
Connection conn = getConnection();
Statement stmt = conn.createStatement();
int count = stmt.executeUpdate(sql);
//executeUpdate可用于执行insert、update、delete语句
//它的返回值是一个整数,指受到影响的行数
if(count > 0){
System.out.println("插入数据成功");
}
}
其他方法可由读者自行扩展。
测试:
刚刚所有的方法我都写在了DBtools这个类中
public static void main(String[] args) throws Exception {
DBTools d = new DBTools();
User u1 = new User(0,"0");
User u2 = new User(1,"1");
d.saveUser(u1);
d.saveUser(u2);
List<User> list = d.getUser();
System.out.println(list);
}
执行的结果为:
总结一下:
JDBC使用:
*1.连接数据库
*2.给数据库发送sql语句,通过Statement对象发送,Statement通过连接数据库的对象创建