概述:
jdbc中的statement对象用于向数据发送sql语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
statement.executeUpdate()方法,用于向数据库发送增,删,改的sql语句,executeUpdate()执行完后,将返回一个整数(就是增删改语句导致了数据库几行数据发生了改变)
statement.executeQuery()方法用于向数据库发送查询语句executeQuery()方法返回代表查询结果的ResultSet对象
CURD操作--Create(插入操作)
科普:
增删查改(英语:CRUD[注 1]),全称增加(Create,意为“创建”)、删除(Delete)、查询(Read,意为“读取”)、改正(Update,意为“更新”)
//4.执行SQL的对象 Statement执行sql的对象
Statement statement = connection.createStatement();
//5.用执行SQL的对象 去执行SQL,可能存在结果,返回结果
String sql="insert into user(....)values(....)";
ResultSet resultSet = statement.executeUpdate(sql)
· if(num>0){
System.out.println("插入成功!!!")
}
//delete和update操作跟上面的相似,只是执行sql语句不同
CURD操作--read(查询操作)
Statement statement = connection.createStatement();
//5.用执行SQL的对象 去执行SQL,可能存在结果,返回结果
String sql="SELECT * from users";
ResultSet resultSet = statement.executeQuery(sql);//返回结果集,结果集中封装了全部的数据库查询出来的结果
//返回的结果集本质:是一个链表的形式存储
while(resultSet.next()){
//根据获取列的数据类型,分别调用ResultSet对象的相应方法映射的Java的对象中,(getObject可得到所有数据类型)
}
代码实现
1.提取工具类
public class JdbcUtils {
private static String driver=null;
private static String url=null;
private static String username=null;
private static String password=null;
static {
try{
//获得类加载器.获得它的资源(返回了一个输入流)
InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
Properties properties = new Properties();
properties.load(in);
driver=properties.getProperty("driver");
url=properties.getProperty("url");
username=properties.getProperty("username");
password=properties.getProperty("password");
//1.驱动只用加载一次
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
//获取连接
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, username, password);
}
//释放连接资源
public static void release(Connection conn, Statement st, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2.编写增删改方法(executeUpdate(SQL))
ublic class TestInsert {
public static void main(String[] args) {
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,'king','123456','1111@qq.com','2020-9-27')";
int i = st.executeUpdate(sql);
if (i>0){
System.out.println("插入成功!");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.release(conn,st,null);
}
}
}
//注意:删除和修改跟create相似,仅需要把sql语句改成相应功能就可实现
3.编写搜索方法(executeQuery(SQL))
public class TestSelect {
public static void main(String[] args) {
Connection conn=null;
Statement st=null;
ResultSet rs=null;
try {
conn = JdbcUtils.getConnection();//获取数据库
st=conn.createStatement();//获得SQL执行对象
String sql="SELECT * from users";//SQL语句
rs=st.executeQuery(sql);//获得返回的所有数据
while(rs.next()){
System.out.println("id="+rs.getObject("id"));
System.out.println("NAME="+rs.getObject("NAME"));
System.out.println("PASSWORD="+rs.getObject("PASSWORD"));
System.out.println("email="+rs.getObject("email"));
System.out.println("birthday="+rs.getObject("birthday"));
System.out.println("===========================");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.release(conn,st,rs);//释放资源,本质xxx.close()
}
}
}