java 如何接收 oracle 的 select 查询结果 并赋值给变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何接收 oracle 的 select 查询结果 并赋值给变量相关的知识,希望对你有一定的参考价值。

比如
int a;
a=s.executeQuery("select host_client from emp where deptno=40");

我想实现 上面的意思。

参考技术A public Int find()
Connection conn = null;
int a = 0;
try
try
//1 注册驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
//2 连接数据库
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","scott","tiger");
catch(Exception e)
System.out.println("没有得到数据库连接");
e.printStackTrace();

return conn;

sql="select host_client from emp where deptno='40' ;";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next())
a = rs.getInt("host_client");

catch(Exception e)
e.printStackTrace();
finally
closeRs(rs);
closePs(ps);
closeConn(conn);

return a;


这就能取到了 但是 你问这么。。。个问题 感觉你这些代码也看不懂???是不是追问

ps rs 是 什么类型啊

追答

。。。。。我的错
PreparedStatement ps=null;
ResultSet rs=null;
String sql=null;

本回答被提问者采纳
参考技术B 你的deptno=40的部门下有几个员工呢?如果只是一个,那么直接赋值给a就行,如果有多个,你就不能只用一个变量a来接受了,得用数组或集合等。 参考技术C List vlist =s.executeQuery("select host_client from emp where deptno=40").list();

Iteratro it =vlist.iterator();
while(it.hasNext())
Emp emp=(Emp )it.next();// 转换为 ENTITY 类

int a=emp.getHost_client();// 这是你要的值

参考技术D 使用jdbc呗

从 Java 到 Oracle SQL 的翻译:将每个元素作为 SELECT 语句的结果使用到循环中[关闭]

【中文标题】从 Java 到 Oracle SQL 的翻译:将每个元素作为 SELECT 语句的结果使用到循环中[关闭]【英文标题】:Translation from Java to Oracle SQL: use every element into a loop as result of a SELECT statement [closed] 【发布时间】:2021-01-18 15:51:30 【问题描述】:

这是我第一次使用 Oracle 功能。 我正在尝试将这段 Java 代码翻译成 Oracle SQL。

 It's present a SELECT statement before the loop
        for (int i = 0; i < checkList.size(); i++) 
                        
                      String check= checkList.get(i);
        

我的翻译:

CURSOR C1 IS 
 ... select statement ... 
BEGIN
    FOR vItems IN C1.COUNT LOOP 
    -- I don't know how to continue, taking the first value of the select 
    END LOOP;
END;

【问题讨论】:

没有足够的信息来尝试翻译。在 Java 代码中,使用了变量 first,但没有提及它可能包含什么值。同样,有一个flag.set 和一个flags.set。什么是/是flag/flagsset 方法有什么作用等等? String priority 被赋予了一个值,但似乎没有以其他方式使用。并且没有显示据称驱动此逻辑的 SELECT 语句,因此无法理解发生了什么。 @BobJarvis-ReinstateMonica 但是如果我想对查询的结果一一评估,怎么办? @BobJarvis-ReinstateMonica 第一部分很重要。如何将 select 语句中的值评估到循环中 【参考方案1】:

假设您想为表 EMP 和架构 SCOTT 中的每个 EMPNO 做一些事情。 (几乎每个 Oracle 数据库安装都有一个标准架构 SCOTT;其中一个表是 EMP,主键为 EMPNO。这通常用于测试和说明。)

要在循环中对EMPNO 的每个值执行某些操作,在 PL/SQL 中,您可以执行以下操作:

declare
  cursor c1 is select empno from scott.emp;
begin
  for rec in c1 loop
    dbms_output.put_line(rec.empno);  -- or more generally, "DO SOMETHING"
  end loop;
end;
/

请注意,这里没有“数组索引”——您直接引用“记录”。 (顺便说一句,如果您希望以特定顺序处理行,您可以将其包含在 order by 子句中,直接在 select 语句中!)

虽然你可以写得更紧凑(我认为在 Java 中没有等价物):

begin
  for rec in (select empno from scott.emp) loop
    dbms_output.put_line(rec.empno);
  end loop;
end;
/

【讨论】:

能保证rec.empno变成一个变量吗?我可以直接使用 rec.empno 作为 switch 语句吗?谢谢 @OutOfMemoryError - 你尝试的时候发生了什么?

以上是关于java 如何接收 oracle 的 select 查询结果 并赋值给变量的主要内容,如果未能解决你的问题,请参考以下文章

我们如何将数组从java传递到oracle中的存储过程

如何从用java编写的查询中将虚线字符串传递给oracle

从 Java 到 Oracle SQL 的翻译:将每个元素作为 SELECT 语句的结果使用到循环中[关闭]

java mybatis对oracle long解决办法?

oracle存储过程中参数datatable如何接收,求高手!

Oracle如何创建存储过程和如何调用存储过程