前言:之前用的是VS+SQL Server 现在用的是Myeclipse+Mysql。能实现心里还是挺兴奋的。
存储过程优点:
1、存储过程增强了SQL语言的功能和灵活性。
2、存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。
3、存储过程能实现较快的执行速度。
4、存储过程能过减少网络流量。
优点知道就可以了,不必一字不差的背过,下面来看看如何实战吧!
准备工作:
1、安装Myeclipse
2、安装mysql并创建好mysql存储过程 具体可以看我之前的博客(mysql存储过程)
3、创建java工具类
1、创建java工具类
/**
* 作者:lxd
* 创建时间:2016 M05 14 13:08:32
* version 1.0 * @parameter
* @since * @return
*/
package cn.com.jdbc;
import java.sql.*;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public final class JdbcUtil {
//连接数据库,账号是root,密码是空,数据库名字为dong
private static String url="jdbc:mysql://localhost:3306/dong";
private static String user="root";
private static String password="";
private JdbcUtil(){
}
static{
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
}
public static Connection getConnection() throws SQLException{
//注意使用的都是java.sql中的接口
return DriverManager.getConnection(url,user,password);
}
public static void free(ResultSet rs,Statement st,Connection conn){
try {
if (rs != null)
rs.close();
}catch(SQLException e) {
e.printStackTrace(); //输出堆栈
}
finally {
try{
if(st!=null)
st.close();
}catch(SQLException e) {
e.printStackTrace(); //输出堆栈
}finally{
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace(); //输出堆栈
}
}
}
}
}
}
2、创建访问存储过程的Psjava.java类
/**
* 作者:lxd
* 创建时间:2016 M05 28 11:34:10
* version 1.0 * @parameter
* @since * @return
*/
package cn.com.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import com.mysql.jdbc.CallableStatement;
public class PsTest {
/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
ps();
}
static void ps() throws SQLException{
Connection conn = null;
CallableStatement cs=null;
ResultSet rs=null;
try {
//2、建立连接
conn=JdbcUtil.getConnection();
String sql="{call addUser(?,?,?,?)}";
//创建存储过程的对象
cs=(CallableStatement) conn.prepareCall(sql);
//注册输出参数
cs.registerOutParameter(4, Types.INTEGER);
//给存储过程的参数设置值
cs.setString(1, "ps name");
cs.setDate(2, new java.sql.Date(System.currentTimeMillis()));
cs.setFloat(3, 100f);
//执行存储过程
cs.executeUpdate();
int id=cs.getInt(4);
//得到存储过程的输出参数值
System.out.println("id="+id);
}finally{
JdbcUtil.free(rs, cs, conn);
}
}
}
3、点击运行,会在控制台上输出结果
4、查看刚才插入的结果
小结:之前用过SQL Server的存储过程,现在转用mysql的还得在学习学习,不过只是开发工具换了换,思想还是一样的。通过敲这个例子,让我对java数据库的访问有了更加深入的了解。