一.jdbc概念
jdbc就是使用java语言操作关系型数据库的一套API。能实现各个Java程序对各种数据库的访问。他是由官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类,该类和接口位于java.sql以及javax.sql中。
jdbc全称:(Java DataBase Connectivity) Java 数据库连接
二.jdbc操作数据库的流程
第一步:编写Java代码
第二步:Java代码将SQL发送到MySQL服务端
第三步:MySQL服务端接收到SQL语句并执行该SQL语句
第四步:将SQL语句执行的结果返回给Java代码
2.1java代码编写步骤
创建工程,导入驱动包。
在pom.xml中dependencies中导入mysql的加载代码。
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29</version> </dependency>
2.2编写代码的具体步骤
第一步 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
第二步 获取Connection对象
Java代码需要发送SQL给MySQL服务端,就需要先建立连接
connection=DriverManager.getConnection(
"jdbc:mysql://192.168.61.141:3306/jdbcstudb",
"root",
"root"
);
System.out.println(connection);
第三步 操作数据库,定义sql语句(增删改查)
先编写sql语句,再调用sql执行对象prepareStatement对象。
执行SQL语句需要SQL执行对象,而这个执行对象就是 prepareStatement对象
新增数据内容
String sql = "insert into dog(name,health,love,strain,lytm) value(?,?,?,?,now())";
String name = "小黑子";
Integer health = 98;
Integer love = 98;
String strain="泰迪";
// Date date=new Date(System.currentTimeMillis());
// 创建prepaarestatement
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1,name);
preparedStatement.setInt(2,health);
preparedStatement.setInt(3,love);
preparedStatement.setString(4,strain);
// preparedStatement.setDate(5,date);
now()表示的是数据库系统时间
删除数据库内容
String sql="delete from dog where id=?";
preparedStatement = connection.prepareStatement(sql);
Integer id=4;
preparedStatement.setInt(1,id);
/*String sql="delete from dog where name=? and health=?";
connection.prepareStatement(sql);
preparedStatement.setString(1,"小黑子");
preparedStatement.setInt(2,100);*/
修改数据库内容
String sql ="update dog set name=?,health=?,love=? where id=?";
String name="小金子";
Integer health=100;
Integer love=90;
Integer id=2;
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(3,love);
preparedStatement.setString(1,name);
preparedStatement.setInt(2,health);
preparedStatement.setInt(4,id);
查询数据库内容
String sql="select id,name,health,love,strain,lytm from dog where health=? and strain=? limit ?,?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1,100);
preparedStatement.setString(2,"中华土狗");
preparedStatement.setInt(3,0);
preparedStatement.setInt(4,2);
resultSet = preparedStatement.executeQuery();
输出查询到的信息
System.out.println("\t\t狗狗信息");
System.out.println("编号\t名字\t\t健康值\t亲密度\t品种\t领养时间");
while (resultSet.next()){
System.out.print(resultSet.getInt("id")+"\t");
System.out.print(resultSet.getString("name")+"\t\t");
System.out.print(resultSet.getInt("health")+"\t");
System.out.print(resultSet.getInt("love")+"\t");
System.out.print(resultSet.getString("strain")+"\t");
System.out.println(resultSet.getDate("lytm")+"\t");
}
第四步 获取到执行新增语句后返回的结果
int num = preparedStatement.executeUpdate();
if (num>0){
System.out.println("新增宠物狗成功");
}
第五步 释放资源
try {
if (resultSet!=null){
resultSet.close();
}
if (preparedStatement!=null){
preparedStatement.close();
}
if (connection!=null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}