在已经建立数据库链接的基础上,如何执行SQL语句呢?这时候,我们就会用到Statement对象和ResultSet对象
Statement
对于增删改操作,我们只需要用到Statement对象,用法如下:
总的五步骤:
声明Statement变量:Statement stmt = null;
获取Statement对象:stmt = conn.createStatement();
编写sql语句:String sql = "update emp set sal=sal+100 where ename='tony'";
执行sql语句:int result = stmt.executeUpdate(sql);
关闭Statement对象,释放资源:stmt.close();
用法如下:
1、Delete
public class TestStatementDelete {public static void main(String[] args) {String url = "jdbc:oracle:thin:@192.168.200.128:1521:XE";String username = "HR";String password = "123456";Connection con = null;Statement stm = null;try {Class.forName("oracle.jdbc.driver.OracleDriver");con = DriverManager.getConnection(url, username, password);System.out.println("连接成功!");stm = con.createStatement();String sql = "delete from mark where studentno='666'";int result = stm.executeUpdate(sql);if (result > 0) {System.out.println("删除成功");}else{System.out.println("删除失败");}} catch (Exception e) {e.printStackTrace();} finally {try {if (stm != null) {stm.close();}if (con != null) {con.close();}} catch (Exception throwables) {throwables.printStackTrace();}System.out.println("断开连接…");}}
}
2、Update
public class TestStatementUpdate {public static void main(String[] args) {// 数据连接信息String url = "jdbc:oracle:thin:@192.168.200.128:1521:XE";String username = "HR";String password = "123456";Connection connection = null;Statement statement = null;try {// 1、加载驱动Class.forName("oracle.jdbc.driver.OracleDriver");// 2、创建连接对象connection =DriverManager.getConnection(url, username, password);// 3、进行相关操作(更改学号为1001学生的电话号码)// 3.1 准备sql语句String sql = "update student set phone='123456' where studentno='1001'";// 3.2 创建statement对象statement = connection.createStatement();// 3.3 执行sql语句int result = statement.executeUpdate(sql);if (result > 0) {System.out.println("修改成功");} else {System.out.println("修改失败");}} catch (Exception e) {e.printStackTrace();} finally {// 4、释放资源try {if (statement != null) {statement.close();}if (connection != null) {connection.close();}} catch (Exception e) {e.printStackTrace();}System.out.println("断开连接…");}}
}
3、Inserte
public class TestStatementInsert {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 数据库连接信息String url = "jdbc:oracle:thin:@192.168.200.128:1521:XE";String username = "HR";String password = "123456";Connection connection = null;Statement statement = null;try {// 1.加载驱动Class.forName("oracle.jdbc.driver.OracleDriver");// 2.创建连接对象connection =DriverManager.getConnection(url, username, password);System.out.println("连接成功!");// 3.新增学生信息// 3.1 准备sql语句System.out.print("请输入年级编号:");int gradeId = scanner.nextInt();System.out.print("请输入年级名称:");String gradeName = scanner.next();StringBuilder sb = new StringBuilder();sb.append("insert into grade values(");sb.append(gradeId);sb.append(",'");sb.append(gradeName);sb.append("')");// 3.2 创建statement对象statement = connection.createStatement();// 3.3 执行sql语句int result = statement.executeUpdate(sb.toString());if (result > 0) {System.out.println("插入成功");} else {System.out.println("插入失败");}} catch (Exception e) {e.printStackTrace();} finally {try {// 4.释放资源if (statement != null) {statement.close();}if (connection != null) {connection.close();}} catch (Exception e) {e.printStackTrace();}}System.out.println("断开连接…");}
}
ResultSet
在上述操作中,不需要返回结果的查看;当我们需要对查询结果进行操作时,ResultSet派上了用场
ResultSet的用法如下
举个栗子
public class TestStatementResultSet {public static void main(String[] args) {String url = "jdbc:oracle:thin:@192.168.200.128:1521:XE";String username = "HR";String password = "123456";Connection con = null;Statement stm = null;ResultSet rs = null;try {Class.forName("oracle.jdbc.driver.OracleDriver");con = DriverManager.getConnection(url, username, password);System.out.println("连接成功!");String sql = "select * from grade";stm = con.createStatement();rs = stm.executeQuery(sql);List<Grade> gradeList = new ArrayList();Grade grade = null;while (rs.next()) {grade = new Grade();grade.setGradeId(rs.getInt("gradeid"));grade.setGradeName(rs.getString("gradename"));gradeList.add(grade);}System.out.println("数据已保存至本地,查询结果如下:");
// for (Grade g : gradeList) {
// System.out.println(g.getGradeId() + "-" + g.getGradeName());
// }System.out.println(gradeList);} catch (Exception e) {e.printStackTrace();} finally {try {// 4.释放资源if (rs != null) {rs.close();}if (stm != null) {stm.close();}if (con != null) {con.close();}} catch (Exception e) {e.printStackTrace();}System.out.println("断开连接!");}}
}