JDBC 数据库驱动,
java.sql
javax.sql
第一个jdbc程序
创建测试数据库
1. 创建一个普通项目
2 导入数据库驱动
3 编写测试代码
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");//固定写法
//用户信息和url
String url="jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
String username="root";
String password="root";
//连接成功 数据库对象 Collection代表数据库
Connection connection=DriverManager.getConnection(url,username,password);
//执行sql的对象 Statement执行sql对象
Statement statement=connection.createStatement();
// statement.executeQuery();//查询操作返回 ResultSet
// statement.executeUpdate();//更新,插入 删除 返回一个受影响的行数
//执行sql的对象 去执行sql 可能存在结果 查看返回结果
String sql="select * from users";
ResultSet resultSet=statement.executeQuery(sql);//返回结果集,结果集中封装全部查询结果
while(resultSet.next()){
System.out.println("id"+resultSet.getObject("id"));
System.out.println("name"+resultSet.getObject("name"));
System.out.println("password"+resultSet.getObject("password"));
System.out.println("email"+resultSet.getObject("email"));
System.out.println("birthday"+resultSet.getObject("birthday"));
}
//释放连接
resultSet.close();
statement.close();
connection.close();
}
步骤总结
1 加载驱动 2 连接数据库 DriverManager 3 获取执行sql的对象 Statement
4 获得返回的结果集 ResultSet 5 释放连接
Statement 对象封装
Statement.executeUpdate方法完成增删改方法
Connection conn=null;
Statement st=null;
ResultSet rs=null;
try {
conn= JdbcUtils.getConnection();//获取数据库连接
st=conn.createStatement();//获得sql执行对象
//String sql="insert into users(id,name,password,email,birthday)" +
// "values(4,'qqwe','123456','qw@qq.com','1999-03-23')";
//String sql="delete from users where id=4";
//String sql="update users set name='xiangyang',password='234567' where id=1";
int i=st.executeUpdate(sql);
if(i>0){
System.out.println("插入成功");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.release(conn,st,rs);
}
}
查询executeQuery方法
Connection conn=null;
Statement st=null;
ResultSet rs=null;
try {
conn= JdbcUtils.getConnection();//获取数据库连接
st=conn.createStatement();//获得sql执行对象
String sql="select * from users where id=1";
rs=st.executeQuery(sql);//查询返回一个结果集
while (rs.next()){
System.out.println(rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.release(conn,st,rs);
}
}
SQL注入问题
sql存在漏洞 会被攻击导致数据泄露,sql会被拼接 or 的原因
PreparedStatement 对象可以防止sql注入 效率更高



