JDBC 学习
用Java操作所有关系型数据库的一套API,JDBC只定义了接口,MySQL,Oracle等自己定义了实现类(驱动)
全称:(Java DataBase Connectivity) Java数据库连接
步骤:
package com.itheima.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class JDBCDemo {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接String url = "jdbc:mysql://127.0.0.1:3306/test";String username = "root";String password = "xyr833166";Connection conn=DriverManager.getConnection(url,username,password);//3.定义sql语句String sql="update tb_user set password = 2000 where id = 1";//4.获取执行sql对象java.sql.Statement stmt=conn.createStatement();//5.执行sqlint count=stmt.executeUpdate(sql);//受影响的行数//6.处理结果System.out.println(count);//7.释放资源stmt.close();conn.close();}
}
jdbc api:
1.DriverManager:注册驱动,获取数据库连接对象 getConnection(String url,String username,String password) url语法格式:jdbc:mysql://ip地址(域名):端口号/数据库名称?键值对1&键值对2... 且如果连接是本机,可以省略地址和端口号
String url = "jdbc:mysql:///test";可以使用useSSL=false
String url = "jdbc:mysql://127.0.0.1:3306/test?useSSl=false";2.Connection
获取执行sql的对象
管理事务:
3.statement
作用:执行sql语句
4.resultset(结果集)
封装了DQL查询语句的结果
获取查询结果 boolean next(),getXxx()
while(rs.next()){//获取数据int id=rs.getInt();String name=rs.getString();double money=rs.getDouble();sout.println(id);sout.println(name);sout.println(money);
}例题:将数据表存放到Account对象中,再放在集合中
先创建Account类,再创建对象,每次循环将数据放进对象中,并且将对象装入集合
package com.itheima.jdbc;import com.itheima.pojo.Account;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class JDBCDemo_Account {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接String url = "jdbc:mysql://127.0.0.1:3306/test?useSSl=false";String username = "root";String password = "xyr833166";Connection conn=DriverManager.getConnection(url,username,password);//3.定义sql语句String sql="select *from tb_user";//4.获取执行sql对象java.sql.Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery(sql);//创建一个集合存放account对象List<Account> list=new ArrayList<>();while(rs.next()){Account account=new Account();account.setId(rs.getInt("id"));account.setName(rs.getString("username"));account.setPassword(rs.getDouble("password"));list.add(account);}System.out.println(list);//5.执行sql//int count=stmt.executeUpdate(sql);//受影响的行数//6.处理结果//System.out.println(count);//7.释放资源rs.close();stmt.close();conn.close();}
}
package com.itheima.pojo;public class Account {int id;String name;double password;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 double getPassword() {return password;}public void setPassword(double password) {this.password = password;}public String toString() {return "Account{" +"id=" + id +", username='" + name + '\'' +", password='" + password + '\'' +'}';}}
5.preparedStatement 继承自statement
防止sql注入

6.数据库连接池
优点:资源重用,提升系统响应速度,避免数据库连接遗漏
标准接口:DataSource 常见的DBCP Druid
