gpt4 book ai didi

带有插入的 java BaseX XQJ executeQuery() 方法返回异常

转载 作者:行者123 更新时间:2023-11-30 09:14:56 25 4
gpt4 key购买 nike

我正在尝试使用 Java BaseX XQJ API 将数据插入 到 XML 文件中。

代码如下(忽略导入):

public class BaseXTest {
public static void main(String[] args) throws Exception {

// obtain an XQDataSource instance
XQDataSource ds = new BaseXXQDataSource();
ds.setProperty("serverName", "localhost");
ds.setProperty("port", "1984");
ds.setProperty("user", "admin");
ds.setProperty("password", "admin");

XQConnection xqc = ds.getConnection();
XQExpression xqe = xqc.createExpression();
xqe.executeCommand("CREATE DB myTestDB");
ds.setProperty("databaseName", "myTestDB");

File myTestDbDataFile = new File("PATH_TO_MY_XML_FILE");
XQConnection2 xqc2 = (XQConnection2) ds.getConnection();
XQItem xqItem = xqc2.createItemFromDocument(new FileInputStream(myTestDbDataFile), null, null);
xqc2.insertItem(myTestDbDataFile.getName(), xqItem, null);

//this query works
// XQResultSequence rs = xqe
// .executeQuery("for $i in (1 to 10) return $i");

//this query works too
// XQResultSequence rs =
// xqe.executeQuery("doc('PATH_TO_MY_XML_FILE')/myTestDbRootNode");

//this query works NOT
XQResultSequence rs = xqe.executeQuery("insert node 'abcdefg' into doc('PATH_TO_MY_XML_FILE')/myTestDbRootNode");
rs.writeSequence(System.out, null);

xqc.close();

}
}

上面的代码抛出了这个异常(在中,声明'rs.writeSequence(System.out, null) ;'):

Exception in thread "main" javax.xml.xquery.XQException:
XQJFOS021 - FORWARD_ONLY_SEQUENCE: Cursor is not positioned on an XQItem.
at XmlTestMain.main(XmlTestMain.java:118)


为什么会这样以及我如何向数据库发出有效的“插入”指令?

我猜想在插入的情况下使用“executeQuery()-方法”有问题,因为它可以处理发出的其他两个指令。

最佳答案

我想查询确实有效。但是,您实际期望的返回值是多少?

您执行的 XQuery Update 语句不返回任何结果(有关更多信息,请参阅 https://docs.basex.org/wiki/Updates#Returning_Results),因此结果不是 XQItem。

此外,如果您想修改主内存节点(例如使用fn:doc 读取它们),您可能需要打开WRITEBACK选项。如果您确实想要转换文档并将结果返回给您的应用程序,您可能需要使用 transform 表达式。

关于带有插入的 java BaseX XQJ executeQuery() 方法返回异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20175951/

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