JDBC中有3种执行sql的语句分别是execute,executeQuery和executeUpdate
execute执行增删改查操作
execute返回的结果是个boolean型,当返回的是true的时候,表明有ResultSet结果集,通常是执行了select操作,当返回的是false时,通常是执行了insert、update、delete等操作。execute通常用于执行不明确的sql语句。
Class.forName(driver); //加载驱动 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root","1234"); //获取数据库连接 stmt = conn.createStatement(); //使用Connection来创建一个Statment对象 boolean hasResultSet = stmt.execute(sql); //执行SQL,返回boolean值表示是否包含ResultSet if (hasResultSet) { //如果执行后有ResultSet结果集 rs = stmt.getResultSet(); //获取结果集 ResultSetMetaData rsmd = rs.getMetaData(); //ResultSetMetaData是用于分析结果集的元数据接口 int columnCount = rsmd.getColumnCount(); while (rs.next()){//输出ResultSet对象 for (int i = 0 ; i < columnCount ; i++ ) { System.out.print(rs.getString(i + 1) + "/t"); } System.out.print("/n"); } } else { System.out.println("该SQL语句影响的记录有" + stmt.getUpdateCount() + "条"); }
executeQuery执行查询操作
executeQuery返回的是ResultSet结果集,通常是执行了select操作。这个方法被用来执行 SELECT 语句,但也只能执行查询语句,执行后返回代表查询结果的ResultSet对象。例如:
Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动 Connection conn = null; conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root","1234"); //使用DriverManager获取数据库连接 Statement stmt = conn.createStatement(); //使用Connection来创建一个Statment对象 ResultSet rs =stmt.executeQuery("select * from teacher"); //执行查询语句并且保存结果 while (rs.next()){ System.out.println(rs.getInt(1) + "/t" + rs.getString(2)); } //把查询结果输出来
executeUpdate执行增删改操作
executeUpdate返回的是int型,表明受影响的行数,通常是执行了insert、update、delete等操作。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。例如:
Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动 Connection conn = null; conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root","1234"); //使用DriverManager获取数据库连接 Statement stmt = conn.createStatement(); //使用Connection来创建一个Statment对象 return stmt.executeUpdate(sql); //执行DML语句,返回受影响的记录条数
实例:
package javaTest; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; public class ConnDataBase { public static void main(String[] args) { execute();//增删改查 // executeQuery();//excuteQuery 查 // executeUpdate();//excuteUpdate 增删改 } /** * 获取连接 * @return 连接对象 */ public static Connection getConnection(){ Connection con = null; try { Class.forName("oracle.jdbc.OracleDriver");//获取oracle驱动 con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "ssh1", "ssh1");///填入url,用户名,密码 }catch(Exception e){ e.printStackTrace(); } return con; } /** * 用executeUpdate执行增删改操作 */ public static void executeUpdate(){ Connection con=null; try { con=getConnection(); String sql="insert into student(s#,sname,sage,ssex) values('7','哈7','27','男')"; // String sql="delete from student where s#='7'"; // String sql="update student set sname='呵7' where s#='7'"; Statement st=con.createStatement();//创建用于执行静态的statement对象 int count=st.executeUpdate(sql);//执行sql插入(删除、更新)语句,返回插入的行数 System.out.println("插入(删除、更新)"+count+"条数据"); con.close(); } catch (SQLException e) { e.printStackTrace(); } } /** * 用executeUpdate执行查询操作 */ public static void executeQuery(){ Connection con = null; try { con = getConnection(); String sql = "select * from Student"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { ResultSetMetaData rsmd = rs.getMetaData();//用于分析结果集的元数据接口 int columnCount = rsmd.getColumnCount();//列数 for(int i=0;i<columnCount;i++){ System.out.print(rs.getString(i+1)+" "); } System.out.println(); } con.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 用execute执行增删改查操作 */ public static void execute(){ Connection con = null; try { con = getConnection(); String sql = "select * from Student"; // String sql="insert into student(s#,sname,sage,ssex) values('7','哈7','27','男')"; // String sql="delete from student where s#='7'"; // String sql="update student set sname='呵7' where s#='7'"; Statement st = con.createStatement(); boolean hasResultSet = st.execute(sql); if(hasResultSet){ ResultSet rs=st.getResultSet(); while (rs.next()) { ResultSetMetaData rsmd = rs.getMetaData();//用于分析结果集的元数据接口 int columnCount = rsmd.getColumnCount();//列数 for(int i=0;i<columnCount;i++){ System.out.print(rs.getString(i+1)+" "); } System.out.println(); } }else{ int count=st.getUpdateCount();//受影响行数 System.out.println("插入(删除、更新)"+count+"条数据"); } con.close(); } catch (Exception e) { e.printStackTrace(); } } }