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();
}
}
}
本文详细介绍了JDBC中三种执行SQL语句的方法:execute、executeQuery和executeUpdate的区别及应用。execute适用于所有类型的SQL语句,返回布尔值指示是否有结果集;executeQuery专门用于查询,返回结果集;executeUpdate用于执行增删改操作,返回受影响的行数。
3946

被折叠的 条评论
为什么被折叠?



