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中execute,executeQuery和executeUpdate的区别分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/59632.html