设置文本表 hsqldb Java

Posted

技术标签:

【中文标题】设置文本表 hsqldb Java【英文标题】:Set text tables hsqldb Java 【发布时间】:2014-06-03 09:16:10 【问题描述】:

我正在尝试创建一个文本表,从文件中设置其值,然后使用 Java 代码中的 hsqldb 将这些值插入到普通表中,如下代码所示:

String sqlkeywordcreate=new String ("CREATE TABLE keywordsTable " + " (k_id INTEGER IDENTITY not NULL PRIMARY KEY,  keywords varchar(20))");
        String sqlkeywordcreate1=new String ("CREATE TEXT TABLE tempKeywordsTable " + " (key varchar(20))");
        System.out.println(sqlkeywordcreate);
        stmt1.executeUpdate(sqlkeywordcreate);
        stmt1.executeUpdate(sqlkeywordcreate1);
        int numOfFields=di.getAllTerms(); 
        String setTempKeywordsTable= new String ("set table "+ "tempKeywordsTable"+ " source 'E:/Thesis/ThesisWork/outdata/keywords.txt';ignore_first=false;shutdown=true");
        stmt1.execute( setTempKeywordsTable);
        String insertkey=  new String("INSERT INTO keywordsTable"+ "(keywords)"+ "select key from tempKeywordsTable");
        stmt1.executeUpdate(insertkey);
        String dropTempKey= new String("drop table tempKeywordsTable");
        stmt1.executeUpdate(dropTempKey);

但是当我运行它时,我得到了这个异常:

java.sql.SQLException: bad TEXT table source file - line number: 0 org.hsqldb.HsqlException: Access is denied: E:/Thesis/ThesisWork/outdata/keywords.txt in statement [set table tempKeywordsTable source 'E:/Thesis/ThesisWork/outdata/keywords.txt']
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source)
at ThesisCode.ReductionTry.main(ReductionTry.java:73)
Exception in thread "main" java.lang.NullPointerException
at ThesisCode.ReductionTry.main(ReductionTry.java:147)

我进行了很多搜索以找出问题所在,但找不到任何东西。 请给我一些建议。

【问题讨论】:

【参考方案1】:

连接字符串时注意空格,你应该写:

String setTempKeywordsTable= new String ("set table "+"tempKeywordsTable"+ " source 'E:/Thesis/ThesisWork/outdata/keywords.

代替:

String setTempKeywordsTable= new String ("set table"+ "tempKeywordsTable"+ " source 'E:/Thesis/ThesisWork/outdata/keywords.

你在 String insertkey 中犯了同样的错误。

【讨论】:

【参考方案2】:

我的一个更新:

现在我们必须使用相对路径。例如:db 存在于此处:"c:\folder1\folder2"。包含数据的文件应位于folder2 或子文件夹中。

【讨论】:

以上是关于设置文本表 hsqldb Java的主要内容,如果未能解决你的问题,请参考以下文章

原因:org.hsqldb.HsqlException: invalid statemnet - 导入 CSV 数据时需要文本表

HSQLDB:在应用程序 jar 文件中嵌入文本表

文本表单 TextView 的 ShareIntent

如何从 Javascript 中获取值以输入文本表单?

文本表单TextView的ShareIntent

JQuery Buttons 加上变量值填充文本表单