Tag: 结果集

状态无效,ResultSet对象关闭

我正在运行代码,但是得到“无效状态,ResultSet对象已关闭”。 错误。 导致错误的原因是什么? try{ query = “SELECT * FROM BUNDLE_TEMP ” + “MINUS ” + “SELECT * FROM BUNDLE”; rs = stmt.executeQuery(query); while (rs.next()){ String bundle = rs.getString(“BUNDLE”); String week = rs.getString(“WEEK”); String sched_dt = rs.getString(“SCHED_DT”).replace(” 00:00:00.0″, “”); String dropper_id = rs.getString(“DROPPER_ID”); query = “INSERT INTO BUNDLE ” + “VALUES (‘” + bundle+”‘,'” + week+”‘,'” […]

PSQLException:此ResultSet已关闭

我生命中第一次出现这个奇怪的错误,我不知道它意味着什么。 我有一个类从postgresql数据库的表中检索信息,做一些操作并返回带有解析元素的arraylist: ResultSet rs = ProduttoreDCS.getProduttori(); System.out.println(“Recuperato result set produttori”); ArrayList res = new ArrayList(); while (rs.next()) { String[] current = new String[6]; current[0] = Integer.toString(rs.getInt(“partita_iva”)); current[1] = rs.getString(“nome”); current[2] = rs.getString(“cognome”); current[3] = rs.getString(“via_sede”); current[4] = rs.getString(“citta_sede”); current[5] = rs.getString(“provincia_sede”); res.add(current); current = null; } return res; 错误在“while”行上。 public static ResultSet getProduttori() throws ClassNotFoundException, […]

java resultset.getstring(“col_name”)查询

我有一个关于java for JDBC中ResultSet.getString()方法的简单查询。 假设Database列中的值具有\ ,这是javas转义字符,例如\n或\t等。 当我将值检索为getString()我看到另外一个转义字符被添加,这个\n的实际含义现在只是一个字符串文字。 所以我不得不unescape java然后正确使用它。 String s= rs.getString(“col_name”); 当s包含`\ n’时: System.out.println(s) 输出: \n 在使用apache常见的StringEscapeUtils 输出: System.out.println(“hi”+s+”hello”); hi hello 我的问题是在unescaping之前是谁添加了这个额外的\ ? 对不起,如果这是一个愚蠢的问题。

基于列标签的CachedRowSetImpl getString抛出“无效的列名”

当我执行以下代码时,一切都很好: ResultSet rs = con.prepareStatement(“SELECT r.UID AS R FROM r”).executeQuery(); System.out.println(rs.getMetaData().getColumnLabel(1)); rs.next(); System.out.println(rs.getString(“R”)); 结果是: R 23 但是当我执行以下代码时: ResultSet rs = con.prepareStatement(“SELECT r.UID AS R FROM r”).executeQuery(); CachedRowSetImpl rslt = new CachedRowSetImpl(); rslt.populate(rs); System.out.println(rslt.getMetaData().getColumnLabel(1)); rslt.next(); System.out.println(rslt.getString(“R”)); 结果是: R java.sql.SQLException: Invalid column name 为什么会在这里抛出exception?

将Resultset转换为String数组

我需要将我的结果集转换为字符串数组。 我正在从数据库中读取电子邮件地址,我需要能够发送它们,如: message.addRecipient(Message.RecipientType.CC, “abc@abc.com,abc@def.com,ghi@abc.com”); 这是我阅读电子邮件地址的代码: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Test { public static void main(String[] args) { Connection conn = null; String iphost = “localhost”; String dbsid = “ASKDB”; String username = “ASKUL”; String password = “askul”; try { Class.forName(“oracle.jdbc.driver.OracleDriver”); String sql = “SELECT * FROM EMAIL”; conn = […]

getColumnLabel与getColumnName

ResultSetMetaData.getColumnLabel和ResultSetMetaData.getColumnName之间有什么区别? Label:获取指定列的建议标题,以便在打印输出和显示中使用。 名称:获取指定列的名称。 有谁知道Label是如何确定的?

将结果集存储到数组中

我知道这应该是简单的,我可能直接盯着问题,但再一次我卡住了,需要代码大师的帮助。 即时尝试从jdbc中的列中取一行,并将它们放在一个数组中。 我这样做如下: public void fillContactList() { createConnection(); try { Statement stmt = conn.createStatement(); ResultSet namesList = stmt.executeQuery(“SELECT name FROM Users”); try { while (namesList.next()) { contactListNames[1] = namesList.getString(1); System.out.println(“” + contactListNames[1]); } } catch(SQLException q) { } conn.commit(); stmt.close(); conn.close(); } catch(SQLException e) { } creatConnection是一个已经定义的方法,可以完成它显然做的事情。 我创建了我的结果集,而另一个,我将该列的字符串存储到一个数组中。 然后打印出来以便进行测量。 也确保它在那里。 问题是它将整个列存储到contactListNames [1] 我想让它将column1第1行存储到[1] 然后第1列第2行进入[2] 我知道我可以用循环做到这一点。 […]

如何为iBatis select语句设置fetchSize

我在Java中使用iBatis作为ORM框架。 我有一个选择声明 SELECT * FROM SOME_TABLE 我正在使用queryForList方法: List list = getSqlMapClientTemplate().queryForList(“getList”); 但是它检索了大量数据,并且此查询的性能非常慢。 我对这个问题的假设是iBatis具有默认的提取大小(例如在JDBS中是10),所以这就是它如此慢的原因。 所以我想设置更大的提取大小(例如1000)。 我怎么能这样做? 还是我看错了? 注意:我需要所有数据,因此在queryForList方法中设置最大结果对我来说不是一个合适的解决方案。 List queryForList(String id, Object parameterObject, int skip, int max)

Statement.execute(sql)vs executeUpdate(sql)和executeQuery(sql)

我有一个与此方法相关的问题: st.execute(sql); 其中st显然是一个Statement对象。 直接来自这个 oracle java教程: execute:如果查询返回的第一个对象是ResultSet对象,则返回true。 如果查询可以返回一个或多个ResultSet对象,请使用此方法。 通过重复调用Statement.getResutSet来检索从查询返回的ResultSet对象。 “ 一个或多个ResultSet对象 ”是什么意思? 一旦获得ResultSet数组,如何管理它们? 而st.executeQuery(sql)和st.executeUpdate(sql)非常清楚。 它不是(至少对我来说) st.execute(sql) )的目的,它也可以返回一个int,就好像它更新了一个表。 提前致谢

如何检查ResultSet是否包含特定命名的字段?

有rs ,一个java.sql.ResultSet的实例,如何检查它是否包含一个名为“theColumn”的列?