相关疑难解决方法(0)

如何在JDBC中获取插入ID?

我希望INSERT在Java中使用JDBC中的数据库(在我的情况下是Microsoft SQL Server)中的记录.同时,我想获取插入ID.如何使用JDBC API实现此目的?

java sql insert-id jdbc

366
推荐指数
5
解决办法
26万
查看次数

获取Oracle DB中插入行的最后一个ID

可能重复:
PLSQL JDBC:如何获取最后一行ID?

我从表中获取ID时遇到问题.我有两个表AJPES_TR和TR_LOG,并且TR_LOG表中的PK被设置为AJPES_TR表中的外键.

在TR_LOG表中,我只是编写从哪个文件数据导入,我想将该PK链接到主表.在mySQL中我做得很好getID.last(); int j = getID.getInt(TR_LOG_ID);但是现在在Oracle中这已不再适用了.

这些是我的PreparedStatements:

PreparedStatement insertData = 
  con.prepareStatement(
    "INSERT INTO T_AJPES_TR(rn,sSpre,reg,eno,davcna,Ime,Priimek) VALUES (?,?,?,?,?,?,?)"
  );
PreparedStatement select_file_log = 
  con.prepareStatement("SELECT * FROM T_AJPES_TR_LOG WHERE File_import = ?"
);
PreparedStatement getID = con.prepareStatement("SELECT * FROM T_AJPES_TR_LOG");
PreparedStatement insertFile = 
  con.prepareStatement(
    "INSERT INTO T_AJPES_TR_LOG(Date_import,File_import) VALUES (?,?)"
  );
Run Code Online (Sandbox Code Playgroud)

在mySQL中,ID被设置为自动增量.

如何从TR_LOG获取ID值并在AJPES_TR表中写入该值?

java oracle jdbc

12
推荐指数
2
解决办法
2万
查看次数

使用JDBC检索Oracle中最后插入的id

我正在尝试使用此问题中提到的方法(我使用的是Oracle 10g)检索JSP中最后生成的自动增量ID,例如PHP mysql_insert_id()函数或MySQL last_insert_id()函数.getGeneratedKeys()

TRANSPORTER在Oracle数据库中有一个表,它有一个名为TRANSPORTER_IDtype 的列,NUMBER(35, 0)它映射到BigDecimalJava中的类型,它是一个序列生成的主键.

Connection con;
ResultSet rs;
PreparedStatement ps;
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "root";
String pwd = "root";

Class.forName("oracle.jdbc.OracleDriver").newInstance();
con = DriverManager.getConnection(url, user, pwd);

ps = con.prepareStatement("INSERT INTO transporter(transporter_name, transporter_website)VALUES(?, ?)");
ps.setString(1, "New");
ps.setString(2, "New Website");
ps.executeUpdate();

BigDecimal id = new BigDecimal(0);
rs = ps.getGeneratedKeys();

while (rs.next()) {
    id = rs.getBigDecimal("transporter_id");
}

out.println("The generated id is : " + id); …
Run Code Online (Sandbox Code Playgroud)

java oracle jdbc oracle10g

4
推荐指数
1
解决办法
5073
查看次数

插入后的Java JDBC检索ID

我使用触发器设置所有表的PK列值,所以我不对Java中的ID做任何操作,但我需要插入后的ID.

我怎样才能获得身份证?

stat.execute("INSERT INTO TPROJECT_PROCESS_GROUP(NPROJECT_ID,VDESCRIPTION) " +
                "VALUES(" +
                "'" + projectID + "'," +
                "'" + description + "'" +
                "");
Run Code Online (Sandbox Code Playgroud)

编辑:嗨再次我读了这个问题,现在我得到一个例外,例如'不支持的操作'(我翻译自我的母语,确切的英文形式可能会有所不同).我想这是关于oracle对GetGeneratedKeys的支持?你对此有所了解吗?

解决方案:正如关于callablestatements的书中所提到的,该语句可用于执行存储过程和函数.与PreparedStatement不同,大多数数据库不会对调用执行任何准备,因为它是一个如此简单的命令.CallableStatement实例可用于返回更准确地返回存储过程或函数的对象.

OracleConnection conn = null;
    //OraclePreparedStatement pstat = null;
    OracleCallableStatement cstat = null;
    String sql = "BEGIN INSERT INTO TPROJECT P (VPROJECT_TITLE,VPROJECT_DESC)    VALUES(?,?) RETURNING P.NPROJECT_ID INTO ?;  END;";
    try {
        conn = ConnectionUtility.GetConnection();
        cstat = (OracleCallableStatement)conn.prepareCall(sql);

        cstat.setString(1, title);
        cstat.setString(2, description);
        cstat.registerOutParameter(3, OracleTypes.NUMBER);
        cstat.execute();

        int returnedID = cstat.getInt(3);
//          System.out.println(returnedID);

        conn.close();

        return returnedID;
Run Code Online (Sandbox Code Playgroud)

java jdbc insert

3
推荐指数
1
解决办法
9487
查看次数

初学者JDBC结果集问题

使用JDBC的新手,我想知道所有操作是否产生结果集.例如,我通过以下方式创建语句以插入/更新到数据库:

StringBuffer query1 = new StringBuffer("UPDATE table SET col1 = value, WHERE some_col = some_val");
PreparedStatement pstmt1 = con.prepareStatment(query1.toString());
ResultSet rs1 = pstmt1.executeQuery();
Run Code Online (Sandbox Code Playgroud)

那么这个代码片段在执行时是否会执行适当的更新并完成?或者我需要以某种方式处理结果集才能完成操作?

我在这里先向您的帮助表示感谢.

java jdbc

2
推荐指数
1
解决办法
421
查看次数

标签 统计

java ×5

jdbc ×5

oracle ×2

insert ×1

insert-id ×1

oracle10g ×1

sql ×1