我有一个简单的SQL代码,它返回一条记录,但是当我从Java执行它时,它不返回记录的字符串部分,只有数字。这些字段是VARCHAR2,但不会被提取到我的结果集中。以下是代码。数据库连接部分已被编辑出来发布在论坛上,但它确实连接。我也附上了输出。任何指导将不胜感激,因为我在网上的搜索已经空了。 -GregJava执行语句不返回结果集中的字符串数据
package testsql;
import java.sql.*;
public class TestSQL {
String SQLtracknbr;
int SQLtracklength;
int numberOfColumns;
String coltypename;
int coldispsize;
String SQLschemaname;
public static void main(String[] args)
throws ClassNotFoundException, SQLException
{
Class.forName("oracle.jdbc.driver.OracleDriver");
DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
String url = "jdbc:oracle:thin:@oracam.corp.mot.com:1522:oracam";
String SQLcode = "select DISTINCT tracking_number from sfc_unit_process_track where tracking_number = 'CAH15F6WW9'";
System.out.println(SQLcode);
Connection conn =
DriverManager.getConnection(url,"report","report");
conn.setAutoCommit(false);
try (Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery(SQLcode)) {
ResultSetMetaData rsmd = rset.getMetaData();
while (rset.next()) {
int numberOfColumns = rsmd.getColumnCount();
boolean b = rsmd.isSearchable(1);
String coltypename = rsmd.getColumnTypeName(1);
int coldispsize = rsmd.getColumnDisplaySize(1);
String SQLschemaname = rsmd.getSchemaName(1);
String SQLtracknbr = rset.getString(1);
int SQLtracklength = SQLtracknbr.length();
if (SQLtracknbr == null)
System.out.println("NULL**********************.");
else
System.out.println("NOT NULL.");
System.out.println("numberOfColumns = " + numberOfColumns);
System.out.println("column type = " + coltypename);
System.out.println("column display size = " + coldispsize);
System.out.println("tracking_number = " + SQLtracknbr);
System.out.println("track number length = " + SQLtracklength);
System.out.println("schema name = " + SQLschemaname);
}
}
System.out.println ("*******End of code*******");
}
}
什么是Java中执行的结果如下:
run:
select DISTINCT tracking_number from sfc_unit_process_track where tracking_number = 'CAH15F6WW9'
NOT NULL.
numberOfColumns = 1
column type = VARCHAR2
column display size = 30
tracking_number =
track number length = 0
schema name =
*******End of code*******
BUILD SUCCESSFUL (total time: 0 seconds)
在猜测,也许当你在while循环中使用1,你应该使用0? – DaaaahWhoosh 2015-01-15 17:44:06
如果您在SQL * Plus中以与从Java连接的用户相同的用户身份运行该查询,会发生什么情况?您是否有任何虚拟专用数据库策略?你使用什么数据库和驱动程序版本,以防万一你有一个已知的有问题的组合。 – 2015-01-15 17:57:59
@DaaaahWhoosh - 1正在引用正确的列。编号从1开始,而不是零。我有另一个查询,这是一个修改,拉动更多的列和相同的问题...没有字符串返回。 – 2015-01-15 20:41:09