文章目录
1. JDBC 简介
- JDBC是java的数据库连接技术
2. Java.SQL的API介绍
2.1 Connection 接口:
- Connection 是一个接口 无法直接创建对象
- Connection 获取数据库联接对象
- 使用DriverManager.getConnection(String url,String user,String password)
- 底层方法:
public static Connection getConnection(String url,
String user, String password) throws SQLException {
java.util.Properties info = new java.util.Properties();//开启流的操作
if (user != null) {
info.put("user", user);
}
if (password != null) {
info.put("password", password);
}
//获取到用户名 密码之后执行获取连接对象 getconnection方法
//getConnection是个私有方法用来创建
return (getConnection(url, info, Reflection.getCallerClass()));
}
2.2 DriverManage 驱动管理
- 功能:
- 注册驱动:
Class.forName("com.mysql.jdbc.Driver)
- 告诉程序用哪个jar包
- 通过源码发现,Driver里面有个 静 态 代 码 块 \color{#ff0036}{静态代码块} 静态代码块
- 注册驱动:
2.3PreparedStatement
public interface PreparedStatement extends Statement(){}
- PreparedStatement 接口,需要
ConnectionObj.prepareStatement(String sql);
来获取预处理对象。
2.4 Statement
public interface Statement extends Wrapper(){}
- 用于执行静态SQL语句并返回它所生成的对象
3. 增删改查
- 增删改
String url = "JDBC:MySQL://数据库的IP地址:端口号/库名";
String user = "用户名";
String pwd = "密码";
Connection conn = null;
PreparedStatemend pstm = null;
String sql = "sql语句";
try{
//创建联接对象
conn = DriverManager.getConnection(url,user,pwd);
//创建预处理对象
pstm = conn.prepareStatement(sql);
}Catch(Exception e){
e.printStackTrace();
};
int res=pstm.executeUpdate();//返回的是受影响的行数
if(res>0){System.out.prinln(成功)else{System.out.prinln(失败)};
//关闭 先定义的后关
if(pstm != null){
try{
pstm.close();
}catch(Exception e){
e.prinStackTrace();
}
}
if(conn != null){
try{
conn.close();
}catch(Exception e){
e.prinStackTrace();
}
}
- 查
String url = "JDBC:MySQL://数据库的IP地址:端口号/库名";
String user = "用户名";
String pwd = "密码";
Connection conn = null;
PreparedStatemend pstm = null;
String sql = "sql语句";
try{
//创建联接对象
conn = DriverManager.getConnection(url,user,pwd);
//创建预处理对象
pstm = conn.prepareStatement(sql);
}Catch(Exception e){
e.printStackTrace();
};
//获得结果集
ResultSet rs = pstm.executeQuery();
//获取结果表的基本信息
ResultSetMetaData rsmd = rs.MetaData();
//列数
int coluNum = rsmd.getColumnCount();
//遍历输出
while(rs.next()){
for(int i=1,i<= coluNum,i++){
System.out.print(rs.getString(i));
}
}
//关闭 先定义的后关
if(rs != null){
try{
rs.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(pstm != null){
try{
pstm.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(conn != null){
try{
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
4. sql占位符
- 将所有变量用?占位,然后用preparedStatement下面的setXXX方法拼接。
String sql = "Insert into employee (Ename,Esex,Eage) values (?,?,?)";
pstm = conn.prepareStatement(sql);
pstm.setString(1, Ename);
pstm.setString(2, Esex);
pstm.setInt(3, Eage);