Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将结果集的内容作为映射返回?_Java_Sql_Oracle_Java 8 - Fatal编程技术网

Java 如何将结果集的内容作为映射返回?

Java 如何将结果集的内容作为映射返回?,java,sql,oracle,java-8,Java,Sql,Oracle,Java 8,我想知道如何将查询结果集作为映射返回。 这是我的查询,其中“nameCodesString”是字符串列表,例如('raul'、'peter'、'shawn'): 结果应该是一个代码和一个值。我不确定如何在与数据库的一个连接中完成这一切。您好,这是我的建议 String req="select n.CODE, l.VALUE from TNAME n join" +" TPROPERTIES l on n.UIDPK = l.OBJECT_UID " +" where n.CODE

我想知道如何将查询结果集作为映射返回。 这是我的查询,其中“nameCodesString”是字符串列表,例如
('raul'、'peter'、'shawn')


结果应该是一个代码和一个值。我不确定如何在与数据库的一个连接中完成这一切。

您好,这是我的建议

 String req="select n.CODE, l.VALUE from TNAME n join"
 +" TPROPERTIES l on n.UIDPK      = l.OBJECT_UID "
 +" where n.CODE IN ?";
 PreparedStatement stmt=null;
 ResultSet rs=null;

 try{
     stmt=conn.prepareStatement(req);
     stmt.setString(1, nameCodesString);
     rs=stmt.executeQuery();
     while(rs.next()){
       nameCode = rs.getString(1);
       displayName = rs.getString(2);
       Person.add(new PersonDTO(nameCode, displayName, ""));
     }
  }
  catch(SQLException ex){
     System.out.println(ex);
  }
  finally{
     if(rs!=null){
           try{
               rs.close();
           }
           catch(SQLException ex){}
       }
      if(stmt!=null){
           try{
               stmt.close();
           }
           catch(SQLException ex){}
      }
     if(conn!=null){
         try{
              conn.close();
         }
         catch(SQLException ex){}
     }
  }
这只是我的建议,我希望它能给你一个提示!
致以最诚挚的问候……

我不明白如何使用准备好的报表。最后,我决定不使用它们,而是坚持执行查询字符串:

Map<String, String> personDetails = new Hashmap();
try (Connection conn = dataSource.getConnection();
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery("select n.CODE, l.VALUE"
              + " from TNAME n join TPROPERTIES l on n.UIDPK = l.OBJECT_UID"
              + " where n.CODE IN (" + nameCodesString + ")")) {
       while (rs.next()) {
          nameCode = rs.getString(1);
          displayName = rs.getString(2);
          personDetails.put(nameCode, displayName); 
       }
}
Map personDetails=newhashmap();
try(Connection conn=dataSource.getConnection();
语句stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(“选择n.CODE,l.VALUE”
+“从TNAME n加入n.UIDPK=l.OBJECT\u UID上的属性l”
+其中n.CODE以(“+nameCodesString+”)形式出现){
while(rs.next()){
nameCode=rs.getString(1);
displayName=rs.getString(2);
personDetails.put(名称代码、显示名称);
}
}

您所做的与准备好的语句无关向我显示“nameCodesString”的值类似:(“raul”、“peter”、“shawn”)。第二个表包含displayName。显然,您实际的问题是如何将两列
ResultSet
转换为
Map
。然后,你的问题和标题中的所有其他内容都过时了,令人分心。源是
PreparedStatement
(以与其目的相反的方式使用)这一事实,您在操作符中使用
和字符串列表也与处理
结果集
没有任何关系。我强烈建议您了解…以及地图在这里的位置?我认为此人就是地图,另一方面,我请他显示该类的所有代码。谢谢
Map<String, String> personDetails = new Hashmap();
try (Connection conn = dataSource.getConnection();
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery("select n.CODE, l.VALUE"
              + " from TNAME n join TPROPERTIES l on n.UIDPK = l.OBJECT_UID"
              + " where n.CODE IN (" + nameCodesString + ")")) {
       while (rs.next()) {
          nameCode = rs.getString(1);
          displayName = rs.getString(2);
          personDetails.put(nameCode, displayName); 
       }
}