JDBC(Java DataBase Connetivity)
概念
就是sun公司定义的一套操作系统所有关系型数据库的规则,即接口,各个数据库厂商去实现这套接口,提供数据库驱动jar包,我们可以使用这套接口来进行编程,真正执行代码的是驱动jar包中的实现类。
步骤
- 导入mysql的驱动jar包
- 注册驱动
- 获取连接
- 获取数据库操作对象
- 执行SQL
- 处理查询结果集
- 释放资源
查询
编写jdbc.properties文件
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/user?serverTimezone=GMT%2B8
username=root
password=root
//查询
public static void main(String[] args){
//获取配置文件
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
String driver=bundle.getString("driver");
String url=bundle.getString("url");
String username=bundle.getString("username");
String password=bundle.getString("password");
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try{
//1.注册驱动
Class.forName(driver);
//2、获取连接
conn=DriverManager.getConnection(url,username,password);
//3、获取数据库操作对象
stmt=conn.createStatement();
//4、执行SQL
String sql="select userid,username,usersex,userage from user";
rs=stmt.executeQuery(sql);//专门执行SQL语句的
//5、处理查询结果集
// boolean falg=rs.next();
// if (falg){
// //光标执行的行有数据
// //取数据
// // getString()方法的特点:不管数据库中的数据类型是什么,都是以String的形式取出的。
// //
// String id=rs.getString(1);//JDBC中所有下边1开始,不是从0开始的
// String name=rs.getString(2);
// String usersex=rs.getString(3);
// String userage=rs.getString(4);
// }
while (rs.next()){
//这个不是以列的下标去的 是以列的名字取的
Integer id=rs.getInt("userid");//JDBC中所有下边1开始,不是从0开始的
String name=rs.getString("username");
String usersex=rs.getString("usersex");
Integer userage=rs.getInt("userage");
System.out.println(id+","+name+","+usersex+","+userage);
}
}catch(SQLException | ClassNotFoundException e){
e.printStackTrace();
}finally {
//6、释放资源
try {
if(rs!=null){
rs.next();
}
}catch(SQLException e){
e.printStackTrace();
}
try {
if(stmt!=null){
stmt.close();
}
}catch(SQLException e){
e.printStackTrace();
}
try {
if(conn!=null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
增删改
//增删改
public static void main(String[] args){
//获取配置文件
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
String driver=bundle.getString("driver");
String url=bundle.getString("url");
String username=bundle.getString("username");
String password=bundle.getString("password");
Connection conn=null;
Statement stmt=null;
try{
//1.注册驱动
Class.forName(driver);
//2、获取连接
conn=DriverManager.getConnection(url,username,password);
//3、获取数据库操作对象
stmt=conn.createStatement();
//4、执行SQL
String sql="insert into `user`(username,usersex,userage) values('你好','你好',19)";
//executeUpdate专门执行DML语句的(insert,delete,update)
int count=stmt.executeUpdate(sql);
System.out.println(count==1?"保存成功":"保存失败");
}catch(SQLException | ClassNotFoundException e){
e.printStackTrace();
}finally {
//6、释放资源
try {
if(stmt!=null){
stmt.close();
}
}catch(SQLException e){
e.printStackTrace();
}
try {
if(conn!=null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
executeUpdate是专门执行DML语句的(insert,delete,update)
增删改 只是sql语句不一样 其他的都一样。