本文主要是介绍jdbc——序列 日期转换 执行存储过程(CallableStatement)对象序列化实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
序列
创建序列
create sequence seq_student_stuid
start with 1000
increment by 1
nomaxvalue
nominvalue
nocycle
nocache;
第一次查询要先查询nextval,然后才能查询currval
例如:
select seq_student_stuid.nextval from dual;
select seq_student_stuid.currval from dual;
日期转换
//把一个输入的日期转换为固定格式的日期
String borndt=input.next();
Date borndate=new SimpleDateFormat("yyyy-MM-dd").parse(borndt);
ps.setDate(4,new java.sql.Date(borndate.getTime()));
//查询学生表中的出生日期
select stuname,to_char(borndate,'yyyy-mm-dd hh24:mi:ss') from student;
//此时查询到的时间时分秒都是0
//如果需要时间精确到时分秒,需要使用时间戳
//时间戳内放的是毫秒数
ps.setTimestamp(4,new Timestamp(borndate.getTime()));
如果是查询,取完值了才能close
增加删除修改,执行完了就可以close
执行存储过程
CallableStatement
用于执行sql存储过程的界面
格式:{call p_getsal(?)},有几个参数就写几个问号
对于输入类型的参数,直接使用setInt等赋值即可
对于输出类型的参数,要先注册再执行
----过程返回单个数据
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLType;
/** create or replace procedure p_getsal
(v_empno in out number
)
is
beginselect sal into v_empno from emp where empno=v_empno;
end;*/
public class ExecuteProc {public static void main(String[] args) throws Exception {Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@//localhost:1521/ORCL";String user = "scott";String password = "tiger";Connection conn = DriverManager.getConnection(url, user, password);//{call <procedure-name>[(<arg1>,<arg2>, ...)]} CallableStatement call= conn.prepareCall("{call p_getsal(?)}");//输入型 in setxxx()赋值即可call.setInt(1, 7788);//输出型 out 先注册call.registerOutParameter(1, java.sql.Types.NUMERIC);call.execute();double sal=call.getDouble(1);System.out.println("7788工号的工资是:"+sal);call.close();conn.close();}
}
----过程返回多个数据
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.
这篇关于jdbc——序列 日期转换 执行存储过程(CallableStatement)对象序列化实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!