1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > JDBC使用总结:增删改查 调用存储过程 执行存储函数 存储过程与存储函数区别分析

JDBC使用总结:增删改查 调用存储过程 执行存储函数 存储过程与存储函数区别分析

时间:2023-09-30 12:33:25

相关推荐

JDBC使用总结:增删改查 调用存储过程 执行存储函数 存储过程与存储函数区别分析

JDBC(Java Database Connectivity):Java访问数据库的解决方案。

JDBC只定义接口,具体实现由各个数据库厂商负责。

原生jdbc技术的使用基本都是模板式的开发,基本格式比较固定。

JDBC增删改查

try{//导入驱动包、加载具体驱动类Class.forName("具体驱动类");//与数据库建立连接,不同数据库写法可能不同,相同数据库不同版本写法可能也不一样,之前开发中遇到的//sqlserver2000的写法就与新版本的不一样Connection connection = DriverManager.getConnection("...");//通过connection,获取操作数据库的对象(Statement\preparedStatement\callablestatement)Statement stmt = connection.createStatement("...");//增删改操作都用stmt.executeUpdate("...");//(查询)处理结果集//ResultSet rs = stmt.executeQuery("...")while(rs.next()){rs.getXxx(..) }}catch(ClassNotFoundException e ){ ...}catch(SQLException e){...}catch(Exception e){...}finally{//关闭各种连接资源,关闭顺序与打开顺序相反相反if(rs!=null)rs.close()if(stmt!=null) stmt.close();if(connection!=null)connection.close();}

Statement\preparedStatement\callablestatement的区别

Statement用于执行不带参数的简单SQL语句,并返回它所生成的结果,每次执行时,数据库都要编译该SQL语句。

PreparedStatement表示预编译的SQL语句的对象,用于执行带参数的预编译的SQL语句,也可以不带参数。编译一次,执行多次,效率高; 安全性好,有效防止Sql注入等问题。

CallableStatement提供了用来调用数据库中存储过程的接口,如果有输出参数要注册,说明是输出参数。继承自PreparedStatement,支持带参数的SQL操作。提供了对输出和输入/输出参数(IN/OUT)的支持。不同数据库的存储过程是不可移植的,因此CallableStatement面临移植性差问题。

JDBC调用存储过程

//jdbc调用存储过程sql语句://{call <procedure-name>[(<arg1>,<arg2>, ...)]}String sql = "{call queryEmp(?,?,?,?)}";Connection conn = null;CallableStatement cstmt= null;try{//提前将获取数据库连接的方法封装为JDBCUtils公共方法conn = JDBCUtils.getConnection();cstmt= conn.prepareCall(sql);//赋值参数cstmt.setInt(1, 7839);//注册参数,声明类型cstmt.registerOutParameter(2, java.sql.Types.VARCHAR);cstmt.registerOutParameter(3, java.sql.Types.DOUBLE);cstmt.registerOutParameter(4, java.sql.Types.VARCHAR);//执行cstmt.execute();//获取值String name = call.getString(2);double sal = call.getDouble(3);String job = call.getString(4);}catch (Exception e){e.printStackTrace();}finally{//释放资源JDBCUtils.release(conn, cstmt, null);}

JDBC调用存储函数

//jdbc调用存储函数sql语句://{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}//第一个占位符为返回值String sql = "{? = call queryEmpIncome(?)}";Connection conn = null;CallableStatement cstmt= null;try{//获取连接conn = JDBCUtils.getConnection();//获取调用存储函数的对象cstmt= conn.prepareCall(sql);//注册返回值类型cstmt.registerOutParameter(1, java.sql.Types.DOUBLE);//参数赋值cstmt.setInt(2, 7839);//执行cstmt.execute();//取出返回值double income = cstmt.getDouble(1);}catch (Exception e){e.printStackTrace();}finally{//释放资源JDBCUtils.release(conn, cstmt, null);}

存储过程与存储函数主要区别

存储过程定义关键字用procedure,函数定义用function。存储过程中不能用return返回值,只能通过改变参数为输出值(OUT)来,近似得输出返回值;存储函数中必须有return子句,定义return子句时,其后紧跟着返回值得类型。存储过程可以有多个输出值,存储函数的返回值只有一个。function定义中只能有DDL(如select等)语句;procedure中主要是DML语句(对数据库进行复杂操作时,如对多个表进行Update、Insert、Query、Delete时)。存储过程的执行方式有两种(a.使用execute b.使用begin和end);函数除了存储过程的两种方式外,还可以当做表达式使用,例如放在select中(select SUMOF(3,4) form dual;)。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。