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的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)