Tag: 结果集

如何select一个空的结果集?

我正在MySQL中使用一个存储过程,并带有一个CASE语句。 在CASE的ELSE子句中(相当于默认值:)我想select并返回一个空的结果集,这样就避免了因为不处理ELSE情况而抛出一个SQL错误,而是返回一个空的结果集,就好像一个普通的查询将不会返回任何行。 到目前为止,我已经设法使用这样的东西: Select NULL From users Where False 但是我必须命名一个现有的表,比如这个例子中的“用户”。 它的工作原理,但我宁愿更优雅的方式,如果最终使用的表名称被重命名或删除不会中断。 我试过Select NULL Where False但它不起作用。 使用Select NULL不会返回一个空的集合,而是一行具有名为NULL并具有NULL值的列。

如何确定列名是否存在于ResultSet中?

由于ResultSet包含从dynamicSQL返回的数据,如果有任何方法来确定ResultSet是否包含特定的列名称? 例如,如果我运行rs.getString("Column_ABC"); 但Column_ABC并不存在,它会抛出exception。 如何testingResultSet是否可以从名为“Column_ABC”的列中获取数据?

ResultSet:按索引检索列值与按标签检索

在使用JDBC的时候,我经常碰到类似的构造 ResultSet rs = ps.executeQuery(); while (rs.next()) { int id = rs.getInt(1); // Some other actions } 我问自己(还有代码的作者)为什么不使用标签来检索列值: int id = rs.getInt("CUSTOMER_ID"); 我听到的最好的解释是有关性能。 但实际上,它是否使处理速度非常快? 我不这么认为,尽pipe我从来没有做过测量。 即使通过标签检索会慢一点,但是,在我看来,它提供了更好的可读性和灵活性。 那么有人可以给我一个很好的解释,避免检索列索引,而不是列标签? 这两种方法的优点和缺点是什么(也许,关于某些DBMS)?

获取ResultSet在Java中返回的行数

我已经使用了一个返回一定数量的行的ResultSet 。 我的代码是这样的: ResultSet res = getData(); if(!res.next()) { System.out.println("No Data Found"); } while(res.next()) { // code to display the data in the table. } 有没有任何方法来检查ResultSet返回的行数? 还是我必须写我自己的?

如何使用Java中的ResultSet获取行数?

我想创build一个简单的方法接收一个ResultSet作为参数,并返回一个包含ResultSet的行数的int。 这是做这个还是不这么做的有效方法? int size = 0; try { while(rs.next()){ size++; } } catch(Exception ex) { System.out.println("——————Tablerize.getRowCount—————–"); System.out.println("Cannot get resultSet row count: " + ex); System.out.println("——————————————————–"); } 我试过这个: int size = 0; try { resultSet.last(); size = resultSet.getRow(); resultSet.beforeFirst(); } catch(Exception ex) { return 0; } return size; 但是我得到一个错误,说com.microsoft.sqlserver.jdbc.SQLServerException: The requested operation is not supported on […]

如何从JDBC ResultSet获取列的数量?

我正在使用CsvJdbc (它是csv-files的JDBC驱动程序)来访问一个csv文件。 我不知道csv文件包含多less列。 我怎样才能得到列的数量? 有没有JDBC的function呢? 我在java.sql.ResultSet中找不到任何方法。 为了访问文件,我使用类似于CsvJdbc网站上的例子的代码。

将ResultSet最有效地转换为JSON?

以下代码使用JSONArray和JSONObject将ResultSet转换为JSONstring。 import org.json.JSONArray; import org.json.JSONObject; import org.json.JSONException; import java.sql.SQLException; import java.sql.ResultSet; import java.sql.ResultSetMetaData; public class ResultSetConverter { public static JSONArray convert( ResultSet rs ) throws SQLException, JSONException { JSONArray json = new JSONArray(); ResultSetMetaData rsmd = rs.getMetaData(); while(rs.next()) { int numColumns = rsmd.getColumnCount(); JSONObject obj = new JSONObject(); for (int i=1; i<numColumns+1; i++) { String […]

从Java ResultSet中检查null int值

在Java中,我试图从ResultSet中testing一个null值,其中列被转换为原始inttypes。 int iVal; ResultSet rs = magicallyAppearingStmt.executeQuery(query); if (rs.next()) { if (rs.getObject("ID_PARENT") != null && !rs.wasNull()) { iVal = rs.getInt("ID_PARENT"); } } 从上面的代码片段,有没有更好的方式来做到这一点,我假设第二个是NULL()testing是多余的? 教育我们,谢谢

JDBC驱动程序在空的ResultSet上抛出“ResultSet Closed”exception

我在SQLite的JDBC驱动程序有问题。 我正在用SELECT语句执行查询。 如果我得到一个空的ResultSet (0行),那么当调用getString(1)时,会看到一个“Closed ResultSet”exception。 没有很多以前的JDBC经验,我的理论(我无法通过JavaDocs确认ResultSet )是这样的 getString(1)不能在空的(零行)结果集上工作(按照devise或由于错误) ResultSet的“打开”标志在零行上设置为false (同样,按devise或错误) 我看到这个错误报告,但不知道是否相关。 我的问题是: 上面的理论是正确的吗? 这是一个错误? 特征? (如果是的话,有人可以指出文件吗?) 在所有JDBC驱动程序中,它是特定于SQLIte的JDBC还是genericsResultSet ? 做这样的事情的正确方法是什么? ? 对于#4,我的解决scheme是在executeQuery()之后使用isFirst() executeQuery()来检查结果集中是否有任何行。 这是最好的做法吗? (我也可以简单地select一个计数插入因为我不需要一个结果集,只是零非零的标志,但如果我真的关心select的结果,我想知道正确的事情) 谢谢!

使用php / mysqli中的存储过程检索多个结果集

我有一个有多个结果集的存储过程。 如何提前到mysqli中的第二个结果集来获得这些结果? 假设这是一个存储过程,如下所示: create procedure multiples( param1 INT, param2 INT ) BEGIN SELECT * FROM table1 WHERE id = param1; SELECT * FROM table2 WHERE id = param2; END $$ PHP是这样的: $stmt = mysqli_prepare($db, 'CALL multiples(?, ?)'); mysqli_stmt_bind_param( $stmt, 'ii', $param1, $param2 ); mysqli_stmt_execute( $stmt ); mysqli_stmt_bind_result( $stmt, $id ); 那么这是我无法工作的部分。 我已经尝试使用mysqli_next_result移动到下一个结果集,但不能得到它的工作。 我们确实让它与mysqli_store_result和mysqli_fetch_assoc / array […]