Oracle中的sequences在java中怎么用

Oracle中的sequences在java中怎么用,第1张

sequences的原理就是,如果当前的序列不存在,它会创建一个序列,如果存在,它首先要得到当前序列的最大值,然后再加一,实现自增长的功能。用java代码同样也能实现squernces的功能。可能是根据个人的编程习惯有关,我不喜欢在java代码中加入存储过程什么的,我喜欢用方法来实现。如果有用过hibernate的话,就跟简单了。在hibernate里面,只需要配置相应的xml文件,就可以实现自增长的功能

你的意思是向程序传入SQL语句然后根据传入的SQL语句进行查询

如果这样,我建议是这样的,写一个单饿独的类来进行数据库CRUD

例如:

package comassetscommon;

import javasqlConnection;

import javasqlDriverManager;

import javasqlPreparedStatement;

import javasqlResultSet;

import javasqlSQLException;

import javasqlStatement;

public class DBUtil {

private static final String user = "assets";

private static final String password = "assets";

private static final String url = "jdbc:oracle:thin:@localhost:1521:assetsdb";

static {

try {

ClassforName("oraclejdbcdriverOracleDriver")newInstance();

} catch (InstantiationException e) {

eprintStackTrace();

} catch (IllegalAccessException e) {

eprintStackTrace();

} catch (ClassNotFoundException e) {

eprintStackTrace();

}

}

public static Connection getConnection() {

Connection conn = null;

try {

conn = DriverManagergetConnection(url, user, password);

} catch (SQLException e) {

eprintStackTrace();

}

return conn;

}

// 执行数据库的数据更新

public static int executeUpdata(Connection conn, String sql,

Object parame) {

int rst = -1;

PreparedStatement pstmt = null;

try {

// 设置为手动提交更新

connsetAutoCommit(false);

pstmt = connprepareStatement(sql);

// 循环设置参数

for (int i = 0; i < paramelength; i++) {

pstmtsetObject(i + 1, parame[i]);

}

rst = pstmtexecuteUpdate();

conncommit();

} catch (SQLException e) {

eprintStackTrace();

try {

// 异常时,数据回滚

connrollback();

} catch (SQLException e1) {

e1printStackTrace();

}

}

return rst;

}

// 执行查询

public static ResultSet executeQuery(Connection conn, String sql,

Object parame) {

ResultSet rs = null;

try {

PreparedStatement pstmt = connprepareStatement(sql,

ResultSetTYPE_SCROLL_INSENSITIVE,

ResultSetCONCUR_READ_ONLY);

for (int i = 0; i < paramelength; i++) {

pstmtsetObject(i + 1, parame[i]);

}

rs = pstmtexecuteQuery();

} catch (SQLException e) {

eprintStackTrace();

}

return rs;

}

// 关闭

public static void close(Connection conn, Statement stmt, ResultSet rs) {

try {

if (rs != null)

rsclose();

rs = null;

} catch (SQLException e) {

eprintStackTrace();

}

try {

if (stmt != null)

stmtclose();

stmt = null;

} catch (SQLException e) {

eprintStackTrace();

}

try {

if (conn != null)

connclose();

conn = null;

} catch (SQLException e) {

eprintStackTrace();

}

}

public static int getCount(Connection conn, String sql, Object params) {

ResultSet rs = null;

try {

PreparedStatement pstmt = connprepareStatement(sql);

// 循环设置参数

for (int i = 0; i < paramslength; i++) {

pstmtsetObject(i + 1, params[i]);

}

rs = pstmtexecuteQuery();

if (rsnext()) {// 如果有结果返回记录条数

return rsgetInt(1);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

return -1;

}

}

方法1在hibernate中配置序列。

方法2在oracle中添加序列,然后取出序列,插入到数据库中。

方法3自己写个序列生成方式。

方法4先加条数据,然后每次插入前,取最大id+1,再插进去

1、其实你的查询看作是select ename from table 就行,因为你只查询了一个字段。

2、ename和ejob是不能取值的,因为他是给你提供结果的集合,也就相当于你的table,但是你可以在外面的查询加上job,也就是:select ename,ejob from table这种形式。

3、序号代表的是问号的顺序。

以上就是关于Oracle中的sequences在java中怎么用全部的内容,包括:Oracle中的sequences在java中怎么用、java如何从oracle中读取的全部结果集里面动态的读取字段、有关Java和Oracle的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9822814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存