概述:
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() } } }