当前位置: 首页 > 知识库问答 >
问题:

使用Java插入到ExistDB中

闻人冷勋
2023-03-14
    String queryString = "update insert <DEP_ROW><DEPT_NO>1</DEPT_NO><DNOMBRE>A</DNOMBRE><LOC>A</LOC></DEP_ROW> into /departamentos";

    consulta = conn.prepareExpression(queryString);
    consulta.executeQuery();
Exception in thread "main" javax.xml.xquery.XQException:
XQJQS001 - Invalid XQuery syntax, syntax does not pass static 
validation.
Root Cause:
XQueryParseException: Encountered "insert" at line 1, column 8.
Was expecting one of:
<EOF> 
"%%%" ...
"=" ...
"," ...
"or" ...
"and" ...
"to" ...
"*" ...
"div" ...
"idiv" ...
"mod" ...
"union" ...
"|" ...
"intersect" ...
"except" ...
"instance" ...
"treat" ...
"castable" ...
"cast" ...
"!=" ...
"<=" ...
">" ...
">=" ...
"eq" ...
"ne" ...
"lt" ...
"le" ...
"gt" ...
"ge" ...
"is" ...
"<<" ...
">>" ...
"[" ...
"-" ...
"+" ...
"<" ...
"/" ...
"//" ...
"(" ...

at Visualizar.insertadep(Visualizar.java:58)
at Visualizar.main(Visualizar.java:23)
at Visualizar.insertadep(Visualizar.java:58)
at Visualizar.main(Visualizar.java:23)

共有1个答案

袁子瑜
2023-03-14

我遇到了和Yeray完全一样的问题,遇到了这个帖子。我现在已经找到了一个解决方案,所以我回来分享我的代码,我希望可以帮助Yeray或其他人。

public class InsertDepartment {

public static final String DRIVER = "org.exist.xmldb.DatabaseImpl";
public final static String URI = "xmldb:exist://localhost:8080/exist/xmlrpc";
public final static String COLLECTION = "/db/first_steps";
public final static String USERNAME = "admin";
public final static String PASSWORD = "";

public static void main(String[] args) throws Exception {
    String value = "";

    Class cl = Class.forName(DRIVER);
    Database database = (Database) cl.newInstance();
    DatabaseManager.registerDatabase(database);
    Collection col = DatabaseManager.getCollection(URI + COLLECTION, USERNAME, PASSWORD);

    int depNumber = 42;
    String depName = "Department 42";
    String depAddress = "42 Galaxy Avenue, Betelgueuse 23458 OH";

    String sQuery = "update insert <department><dep_number>" + depNumber
            + "</dep_number><dep_name>" + depName + "</dep_name><dep_address>"
            + depAddress + "</dep_address></department> into /departments";

    EXistXQueryService service = (EXistXQueryService) col.getService("XQueryService", "1.0");
    service.setProperty("indent", "yes");
    service.query(sQuery);
}

请注意,为了使这段代码正常工作,我在我的项目中使用了以下库列表。这些代码可能不需要。

exist-xqj-1.0.1.jar
j8fu-1.21.jar
log4j-1.2-api-2.11.0.jar
log4j-api-2.11.0.jar
log4j-core-2.11.0.jar
log4j-jul-2.11.0.jar
log4j-slf4j-impl-2.11.0.jar
org.apache.commons.pool.jar
org-apache-commons-logging.jar
ws-commons-util-1.0.2.jar
xmldb-api-1.7.0.jar
xmlrpc-client-3.1.3.jar
xmlrpc-common-3.1.3.jar
xqj2-0.0.1.jar
xqjapi.jar
exist.jar
exist-optional.jar

此外,我必须将文件log4j2.xml添加到项目的src文件夹中。你可以在这篇文章中找到这个文件的示例。

 类似资料:
  • eXist 是一个开源的native XML数据库.它有依据索引的XQuery处理程序,可以自动进行索引,扩展的全文本搜索,XUpdate支持并且它与现存的XML开发工具可以紧密的结合在一起

  • 将数据插入数据库的最佳方法是什么? 这是我所拥有的,但这是错误的… 函数将数据添加到列表框中 http://www.pictourl.com/viewer/37e4edcf 但不进入数据库.. http://www.pictourl.com/viewer/4d5721fc 全部功能:

  • 问题内容: 我只能用String来做到这一点,例如: 有没有办法用StringBuilder做到这一点?谢谢。 问题答案: 警告: 它违背了的目的,但确实满足您的要求。 更好的技术 (尽管仍然不理想): 反转要插入的 每个 字符串。 将 每个字符串 附加 到。 完成后反转 整个 过程。 这将打开一个O( ñ ²)溶液到O( Ñ )。

  • 问题内容: 我有对象的arraylist,并尝试将列表插入HANA。所以我的插入代码看起来像 } 这里 返回一个整数数组。 但这无法正常工作。根据我的程序每次都会调用ARRAY函数,但是为什么不将其插入HANA数据库中呢,所以过了一会儿我才知道我必须将JAVA Array转换为HANA Array。如何转换Java Array到HANA阵列。任何帮助表示赞赏。 问题答案: @RKR好的,这里有您的

  • 我目前正在验证一个在Oracle for DB2上开发的应用程序。因为我们不想维护两个独立的源,所以我需要一些查询来将blob插入到一个字段中,该字段在oracle和db2中都可以使用。我没有任何标识符来区分应用程序在哪个DB下运行。 我在oracle中使用,在DB2中使用,它们是互不兼容的。

  • 问题内容: 我正在Flask中构建应用程序,并且定义了几个SQLAlchemy模型。我有一个字典,其中包含每种模型类型的键/值对。 我想使用字典进行广义插入…这是否需要映射器?我知道wtforms.ext.sqlalchemy.orm.model_form()会使用populate_obj(model)生成一个对象,因此这是可能的。我已经仔细阅读了文档,但找不到它。我可以稍后执行提交,但是现在需要