JDBC Statement,PreparedStatement

2018-08-12  本文已影响0人  羽寂

Statement系列接口用于将用户创建的sql语句提交到数据库执行,除了执行存储过程外,一些接口方法还接收参数。

如何选择使用哪种类型Statement?

Statement的使用

1.创建Statement对象

Statement stmt=conn.creatStatement();

2.Statement常用方法

3.关闭

stmt.close(); 关闭并释放资源。

PreparedStatement的使用

1.使用PreparedStatement插入数据实例

 ...//连接数据库
String sql="insert into userInfo(username.password,gender,age) value(?,?,?,?)";
 //可以传入参数
PreparedStatement ps=conn.prepareStatement(String sql);
//调用setXXX系列方法给问号赋值,下标从1开始,代表第一个问号
ps.setString(1,"name");
ps.setInt(2,123456);
ps.setString(3,"男");
ps.setInt(4,25);
//执行插入
ps.executeUpdate();
ps.close();
conn.close();

2.常用方法:
根据一般的使用习惯

比如要查询信息得到结果集可以这样写: ResultSet rs=ps.executeQuery(); (这里不传入参数)

2.关闭

ps.close(); 关闭并释放资源。

CallableStatement的使用

1.创建一个CallableStatement

1.1 存储过程存在的三种参数:IN OUT INOUT

1.2 如果存储过程只是IN

String sql="{call getEmpName (?, ?)}";
//conn.prepareCall() 与conn.preparedStatement()功能一样
CallableStatement cstmt=conn.prepareCall(sql);
cstmt.setString(1,"aaa");
cstmt.setInt(2,123);
//发送参数,所有调用存储过程的sql语句都是使用executeQuery方法执行。
ResultSet rs=cstmt.executeQuery();

1.3 如果存储过程是INOUT

 //第一个?是输入参数,第二个?是输出参数
 String sql = "CALL pro_test2(?,?)";
 CallableStatement cstmt=conn.preparecall(sql);
 //设置输入参数
 cstmt=setInt(1,5);
 //设置输出参数,用registerOutParameter绑定
 cstmt.registerOutParameter(2,java.sql.Types.VARCHAR);
 //执行
 cstmt.executeQuery();
 //根据?位置取得数据getXXX()方法只用于存储过程
 String rs=cstmt.getString(2);

1.4 关闭CallableStatement

cstmt.close();

上一篇下一篇

猜你喜欢

热点阅读