Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java BaseX XQJ executeQuery()-带有insert的方法返回异常_Java_Xquery_Basex - Fatal编程技术网

java BaseX XQJ executeQuery()-带有insert的方法返回异常

java BaseX XQJ executeQuery()-带有insert的方法返回异常,java,xquery,basex,Java,Xquery,Basex,我正在尝试使用JavaBaseXQJAPI将数据插入XML文件 代码如下(不允许导入): 上述代码抛出此异常(在行中,语句“rs.writeSequence(System.out,null);”): 为什么会出现这种情况和如何向数据库发出有效的“插入”指令? 我猜在插入时使用“executeQuery()-method”可能有问题,因为它可以处理发出的其他两条指令。我猜查询实际上正在工作。然而,您实际期望的返回值是什么 您执行的XQuery Update语句不返回任何结果(有关更多信息,请参阅

我正在尝试使用JavaBaseXQJAPI数据插入XML文件

代码如下(不允许导入):

上述代码抛出此异常(在中,语句“rs.writeSequence(System.out,null);”):


为什么会出现这种情况如何向数据库发出有效的“插入”指令?


我猜在插入时使用“executeQuery()-method”可能有问题,因为它可以处理发出的其他两条指令。

我猜查询实际上正在工作。然而,您实际期望的返回值是什么

您执行的XQuery Update语句不返回任何结果(有关更多信息,请参阅),因此结果不是XQItem


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

我希望在文本编辑器中打开该数据库的xml文件时会出现插入。我不希望有任何特殊的返回值。我该怎么做才能做到这一点呢?我认为您将文件系统中的文档与数据库中的文档混淆了。如果将文档放在数据库中,它们将以特定的存储格式存储(以便更快地访问和查询),而不是以纯文本存储。然后,该文档独立于原始输入文档。但是,您可以使用写回选项将更改传播到原始文档。或者您可以使用
fn:put
file:write
(请参阅)将数据写入磁盘。谢谢,我尝试了以下操作:
XQResultSequence rs=xqe.executeQuery(“WRITEBACK true”)
xqe.executeCommand(“写回真”)
ds.setProperty(“写回”、“真”)。他们不工作。如何通过java设置写回选项成功了。
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();

}
}
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)