1. 向数据库中新增数据
可以使用ParpareStatement ps=connection.PrepareStatement(“INSERT INTO 表名 values(?,?,?,?)”);可以使用ParpareStatement ps=connection.PrepareStatement(“INSERT INTO 表名 values(?,?,?,?)”);
使用问号来占位,例如:占位符所在的位置是字符串类型,调用的方法为ps.setString(占位号序号,值)如果需要特定日期类型需要转换成字符串然后再给其赋值。
代码实现如下
package demo1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.until.ConnectionFactory;
public class Test {
public static void main(String[] args) {
//创建数据库查询对象
Connection connection=ConnectionFactory.getConnection();
try {
String sql="INSERT INTO books VALUES(null,?,?,?)";
PreparedStatement ps=connection.prepareStatement(sql);
//给占位的问号赋值
ps.setString(1,"三体");
ps.setDouble(2, 23.4);
ps.setInt(3, 10);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2. 删除数据库中的数据
语法为delete from books where name=?条件也是用问号占位的,然后直接调用方法,ps.executeUpdate()即可按照书的名字删除该条数据。语法为delete from books where name=?条件也是用问号占位的,然后直接调用方法,ps.executeUpdate()即可按照书的名字删除该条数据。
代码实现如下
package demo3;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.until.ConnectionFactory;
public class Test {
public static void main(String[] args) {
Connection connection=ConnectionFactory.getConnection();
PreparedStatement ps=null;
try{
//根据书名删除书本信息
ps=connection.prepareStatement("delete from books where name=?");
ps.setString(1, "雅舍");
ps.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
ConnectionFactory.close(connection,ps);
}
3. 更新数据库中的数据
语法为UPDATE books set name=? WHERE id=? 所有要更新的内容或者是条件都要使用?占位符,最后在用set修改相应的值。
代码实现如下
package demo4;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.until.ConnectionFactory;
public class Test {
public static void main(String[] args) {
Connection connection=ConnectionFactory.getConnection();
PreparedStatement ps=null;
try{
//更改图书信息
ps=connection.prepareStatement(" UPDATE books set name=? WHERE id=?");
ps.setString(1, "三体");
ps.setDouble(2, 6);
ps.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
ConnectionFactory.close(connection,ps);
}
}
}
4. 查询数据库中的数据
JDBC查询数据并将封装的步骤
(1)可以将数据库的数据封装为键值对集合和实体类集合,如果需要封装成一个实体类,该类的集合中的属性和数据库中一张表的字段相对应,并对其属性进行封装。
(2)执行JDBC获取查询结果集对象
(3)使用if语句或者while语句获取结果集对象的下一行数据
(4)在if语句使用结果集取出这一行各列数据
代码实现如下
package com.action;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.entity.Books;
import com.until.ConnectionFactory;
public class Test {
public static void main(String[] args) {
Connection connection=ConnectionFactory.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
List<Books> list=new ArrayList<Books>();
try{
String sql="SELECT * FROM books";
ps=connection.prepareStatement(sql);
//执行查询操作
rs=ps.executeQuery();
//循环从结果集中取出每一行数据
//定义一个对应类型的集合
while(rs.next()){
//一旦结果集指向下一行,就可以使用结果集取出这一行的数据
//将每一行数据都封装为一个对象
Books bookinfo=new Books();
bookinfo.setId(rs.getInt("id"));
bookinfo.setName(rs.getString("name"));
bookinfo.setPrice(rs.getDouble("price"));
bookinfo.setStock(rs.getInt("stock"));
//对象保存到集合中
list.add(bookinfo);
}
}catch(Exception e){
e.printStackTrace();
}finally{
ConnectionFactory.close(connection,ps,rs);
}
for(Books bookinfo:list){
System.out.println(bookinfo.getId()+"\t"+bookinfo.getName()+"\t\t"+bookinfo.getPrice());
}
}
}