gpt4 book ai didi

Java 从 SQL 数组获取结果集失败

转载 作者:行者123 更新时间:2023-11-29 00:24:03 25 4
gpt4 key购买 nike

我试图从数据库中检索电子邮件地址,但没有成功。我的代码如下:

主要:

System.out.println(PortfolioData.getEmails(58));  //So Far Returning null

投资组合数据:

public static String[] getEmails(int i){    
DebugMessage.M("Retrieving Email Records for Person Key Number: " + i);
eq.query("SELECT EmailAddresses"
+ " FROM Emails as E"
+ " JOIN People AS P ON E.PersonKey = P.PersonKey"
+ " WHERE P.PersonKey = ?",i);
return (String[])eq.getOnceMultipleRows("EmailAddresses");
}

DBEasyQuery:

public Object getOnceMultipleRows(String label){
if(next()){
try {
Array a = rs.getArray(label);
String[] x = (String[])a.getArray();
smartClose();
return x;
//return rs.getArray(label).getArray();
} catch (SQLException e) {
DebugMessage.E("getOnceMultipleRows() Failed on Query: " + queryExecuted());
DebugMessage.E("getOnceMultiple() Failed on Label: " + label );
notExecuted(e);
}
}
smartClose();
return null;
}

这是我的日志文件和错误:

MESSAGE:   Retrieving Person Records for Person Key Number: 58
MESSAGE: SharedConnection dziemba created
SQLQUERY: SELECT AlphaID, FirstName, LastName, Street, City, State, Zip, Country, AcctType, SecID FROM People AS P JOIN Addresses AS A ON P.PersonKey = A.PersonKey LEFT JOIN Role AS R ON P.PersonKey = R.PersonKey WHERE P.PersonKey = 58
MESSAGE: Retrieving Email Records for Person Key Number: 58
SQLQUERY: SELECT EmailAddresses FROM Emails as E JOIN People AS P ON E.PersonKey = P.PersonKey WHERE P.PersonKey = 58
ERROR: getOnceMultipleRows() Failed on Query: SELECT EmailAddresses FROM Emails as E JOIN People AS P ON E.PersonKey = P.PersonKey WHERE P.PersonKey = 58
ERROR: getOnceMultiple() Failed on Label: EmailAddresses
ERROR:
The Following Query Was NOT Executed:
SELECT EmailAddresses FROM Emails as E JOIN People AS P ON E.PersonKey = P.PersonKey WHERE P.PersonKey = 58
Stack Trace:
ERROR: sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
ERROR: sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
ERROR: sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
ERROR: java.lang.reflect.Constructor.newInstance(Unknown Source)
ERROR: java.lang.Class.newInstance(Unknown Source)
ERROR: com.mysql.jdbc.SQLError.notImplemented(SQLError.java:1334)
ERROR: com.mysql.jdbc.ResultSetImpl.getArray(ResultSetImpl.java:1230)
ERROR: com.mysql.jdbc.ResultSetImpl.getArray(ResultSetImpl.java:1247)
ERROR: unl.cse.DBEasyQuery.getOnceMultipleRows(DBEasyQuery.java:218)
ERROR: unl.cse.PortfolioData.getEmails(PortfolioData.java:136)
ERROR: unl.cse.Main.main(Main.java:44)
ERROR:

Kayaman 评论说我的错误日志没有显示实际的异常。所以我删除了错误记录和捕获。这是我现在在终端中得到的:

[Ljava.lang.String;@59966240
java.sql.SQLFeatureNotSupportedException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.mysql.jdbc.SQLError.notImplemented(SQLError.java:1334)
at com.mysql.jdbc.ResultSetImpl.getArray(ResultSetImpl.java:1230)
at com.mysql.jdbc.ResultSetImpl.getArray(ResultSetImpl.java:1247)
at unl.cse.DBEasyQuery.getOnceMultipleRows(DBEasyQuery.java:220)
at unl.cse.PortfolioData.getEmails(PortfolioData.java:136)
at unl.cse.Main.main(Main.java:44)
Exception in thread "main" java.lang.NullPointerException
at unl.cse.DBEasyQuery.getOnceMultipleRows(DBEasyQuery.java:227)
at unl.cse.PortfolioData.getEmails(PortfolioData.java:136)
at unl.cse.Main.main(Main.java:44)

查询本身在 MySQL Workbench 中执行良好: enter image description here

DBEasyQuery 的一些附加支持代码可以在下图中找到。我将其从帖子中删除,因为它使帖子变得很长:http://i.stack.imgur.com/WZDkL.png

我认为它没有错误,因为它可以很好地处理我可以抛出的所有其他内容:

最佳答案

问题出在 JDBC 驱动程序中。并非所有驱动程序都支持所有功能,并且您使用的驱动程序不支持此功能。

解决方案:找到支持该功能的不同驱动程序(如果存在)。

编辑:驾驶员侧看起来不太好。您可能需要以不同的方式执行查询。

编辑 #2:似乎 MySQL doesn't support the ARRAY type所以你需要以老式的方式做事。

关于Java 从 SQL 数组获取结果集失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19873736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com