JDBC(Java DataBase Connectivity,java数据库连接)
JDBC规范(掌握四个核心对象):
-
DriverManager:用于注册驱动
-
Connection: 表示与数据库创建的连接
-
Statement: 操作数据库sql语句的对象
-
ResultSet: 结果集或一张虚拟表
开发步骤
1.注册驱动
告知java连接什么数据库
2.获取连接
获取与数据库连接的对象
3.获取执行sql语句对象
获取一个可以执行sql语句的对象
4.执行sql语句
增删改
查
5.处理结果
增删改一般不需要处理结果
查询需要处理结果
6.关闭资源
所有关闭资源的方法都是close
案例实现
//查询所有的分类信息
@Test
public void demo1() throws Exception{
// 注意:使用JDBC规范,采用都是 java.sql包下的内容
//1 注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2 获得连接
String url = "jdbc:mysql://localhost:3306/mydb";
Connection conn = DriverManager.getConnection(url, "root", "root");
//3获得执行sql语句的对象
Statement stmt = conn.createStatement();
//4执行SQL语句
ResultSet rs = stmt.executeQuery("select * from category");
//5处理结果集
while(rs.next()){
// 获得一行数据
Integer cid = rs.getInt("cid");
String cname = rs.getString("cname");
System.out.println(cid + " , " + cname);
}
//6释放资源
rs.close();
stmt.close();
conn.close();
}
preparedStatement:预编译对象,是Statement对象的子类。
特点:
-
性能高
-
会把sql语句先编译
-
能过滤掉用户输入的关键字。
//获取连接
Connection con = JDBCUtils.getConnection();
//获取执行sql语句对象
String sql = "select * from users where username = ? and password = ?";
PreparedStatement ps = con.prepareStatement(sql);
//为?赋值
ps.setObject(1,username);
ps.setObject(2,password);
//执行sql语句
ResultSet rs = ps.executeQuery();
if(rs.next()){
System.out.println("登陆成功");
}else{
System.out.println("登陆失败");
}
rs.close();
ps.close();
con.close();
public class JDBCUtils {
private static String url ;
private static String username;
private static String password;
private static String driverClass;
static {
try {
init();
//注册驱动
Class.forName(driverClass);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void init() throws IOException {
Properties p = new Properties();
//当前类.class.getClassLoader.getResourceAsStream(文件名);
InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("config.properties");
p.load(in);
in.close();
// 为变量赋值
url = p.getProperty("url");
username = p.getProperty("username");
password = p.getProperty("password");
driverClass =p.getProperty("driverClass");
}
public static Connection getConnection() throws SQLException {
Connection con = DriverManager.getConnection(url, username, password);
return con;
}
public static void close(Connection con, Statement stat ,ResultSet rs){
try {
if(con!=null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(stat!=null)
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(rs!=null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}