通过JDBC可以实现在Java代码中对数据库执行操作。
1.JDBC所需的四个参数(username,password,url,driver)
这个步骤就相当于我们第一次打开数据库,首先准备好用户名和密码还有主机端口号等信息。代码如下:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
jdbc.username=root
jdbc.password=root
一般情况只写(driver,url,username,passsword)
jdbc.在这里是为了指明这个是jdbc的步骤
2.加载数据库驱动
加载jdbc驱动就相当于打开了Navict数据库。代码如下:
class.forName(driver);
3.获取连接对象
这里我们要输入第一步准备好的用户名和密码还有主机端口号等信息,进行登录操作并且建立连接,如图所示:
代码操作如下:
Connection connection = DriverManager.getConnection(url, username, password);
DriverManager是我们说的驱动管理器,它有一个可以获取连接的方法getConnection()。
方法内的参数分别为
url :用来连接到指定远程数据库的标识符
username:用户名
password:密码
最终这个方法会给我们返回一个连接对象Connection,这个返回的对象就是我们常说的数据库连接,如图所示:
4.获取执行对象Statement(或者preparedStatement:表示预编译的 SQL 语句的对象 )
我们需要在第三步创建的连接里新建一个查询,所以用connection的方法创建一个查询对象,也就是执行sql的对象
1.执行静态SQL语句,通过Statement实例实现 ,获取Statement对象的时候不直接传入sql
Statement statement = connection.createStatement();
2.执行动态SQL语句 ,通过PreparedStatement 实例实现 ,获取PrepardeStatement对象的时候需要直接传入sql
PreparedStatement preparedStatement = connection.prepareStatement( sql);
5.写SQL语句并执行
Statement对象
String sql1 ="update stu set name=李四 where id=1";
String sql2 ="select * from stu";
//执行增删改操作,调用executeUpdate
int count =statement.executeUpdate(sql1);
//执行查询操作,调用executeQuery
ResultSet resultSet = statement.executeQuery(sql2);
PreparedStatement对象
//修改和新增调用executUpdate方法
String sql = "update bmi set date=?,height=?,weight=?,bmi=?,sign=?,username=? where id=?";
//执行SQL语句
PrepareStatement prepareStatement = conn.prepareStatement(sql);
//占位符赋值
prepareStatement.setString(1, bmiEntity.getBmi());
prepareStatement.setString(2, bmiEntity.getDate());
prepareStatement.setString(3, bmiEntity.getSign());
prepareStatement.setString(4, bmiEntity.getHeight());
prepareStatement.setString(5, bmiEntity.getWeight());
prepareStatement.setString(6, bmiEntity.getUsername());
prepareStatement.setInt(7, bmiEntity.getId());
int i = pstmt.executeUpdate();
if(i==1){
System.out.println("修改成功");
return i;}
//查询和按照id删除调用executQuery方法
String sql = "select * from bmi where id=?";
//执行SQL语句
PrepareStatement prepareStatement = conn.prepareStatement(sql);
//占位符赋值
pstmt.setInt(1, id);
ResultSet resultSet = pstmt.executeQuery();
?为占位符, PreparedStatement 中会使用占位符来代替sql拼接
6.遍历结果集
当我们执行sql后就会在控制台显示信息,我们就需要读取它的内容
//创建实体
BmiEntity entity = new BmiEntity();
while (result.next()) {
//获取属性
String bmi = rs.getString("bmi");
String date = rs.getString("date");
String height = rs.getString("height");
String weight = rs.getString("weight");
String sign = rs.getString("sign");
String username1 = rs.getString("username");
//添加到实体
entity.setId(rs.getInt(id));
entity.setBmi(bmi);
entity.setDate(date);
entity.setHeight(height);
entity.setWeight(weight);
entity.setSign(sign);
entity.setUsername(username1);
}
return entity;
7.释放资源
if (result != null) result.close();
if (preparedStatement != null) preparedStatement.close();
if (connection != null) connection.close();