使用 Javafx(netbeans) 在 SQLITE 数据库中插入 PDF 或任何类型的文件

Posted

技术标签:

【中文标题】使用 Javafx(netbeans) 在 SQLITE 数据库中插入 PDF 或任何类型的文件【英文标题】:Inserting PDF or anytype of file in SQLITE database using Javafx(netbeans) 【发布时间】:2017-03-23 09:45:57 【问题描述】:

我正在创建一个桌面应用程序,用户可以在其中导入文件并从数据库 (SQlite) 中检索它们,并且他们可以查看或修改数据 所以如果有人能帮我解决这一切 1.我使用SQLITE创建数据库 2.我使用按钮文件选择器然后一个按钮保存导入到数据库 问题 1.打开文件(完成) 2.存入数据库(否​​) 你可以看到我的代码

Mycode打开按钮

public void openfolder (ActionEvent event) throws IOException 
    FileChooser fc = new FileChooser();
    fc.setInitialDirectory(new File("C:\\Users\\Lenovo\\Documents\\NetBeansProjects\\sogece\\src\\PDFimport"));
    fc.getExtensionFilters().addAll(
    new ExtensionFilter("PDF Files","*.PDF"));
    List<File> selectedFiles = fc.showOpenMultipleDialog(null);
    if (selectedFiles !=null)
        for(int i =0;i <selectedFiles.size();i++)
        listview.getItems().add(selectedFiles.get(i) .getAbsolutePath());
        else
        System.out.println("file is not valid");
    

Mycode保存按钮

String query = "INSERT INTO PDFS (liste) VALUES (" + listview.getAccessibleText()
        + ")";

System.out.println("Inserting\n" + query);
insertStatement(query);

Connection c = null;
Statement stmt = null;
try 
    Class.forName("org.sqlite.JDBC");
    c = DriverManager.getConnection("jdbc:sqlite:sogeclair.sqlite");
    c.setAutoCommit(false);
    System.out.println("Opened database successfully");
    stmt = c.createStatement();

    stmt.close();
    c.commit();
    c.close();
 catch (Exception e) 
    System.err.println(e.getClass().getField(query) + ": " + e.getMessage());
    System.exit(0);

和错误

Inserting
INSERT INTO PDFS (liste) VALUES (null)
Opened database successfully
Our query was: INSERT INTO PDFS (liste) VALUES (null)
Opened database successfully
Deleting directory 
C:\Users\Lenovo\Documents\NetBeansProjects\sogece\dist\run674970846

然后我使用了另一种解决方案来导入 PDF,但我得到了这个错误 代码

    String query = "INSERT INTO PDFS (liste) VALUES (?) "try (PreparedStatement stm = connection.prepareStatement(query) 
//NOTE: Position indexes start at 1, not 0
stm.setString(1, listview.getAccessibleText ());

stm.executeUpdate();

错误 java.lang.UnsupportedOperationException: Not supported yet. at sogeclair.connection.prepareStatement(connection.java:17) at sogeclair.PlanningController.btninsert(PlanningController.ja‌​va:285) ... 58.


我回去验证问题,但我不明白这是什么意思 Connection.java :17

class connection  static PreparedStatement prepareStatement(String query)  throw new UnsupportedOperationException("Not supported yet.");

PlanningController.java:285 :try (PreparedStatement stm = connection.prepareStatement(query))

【问题讨论】:

请将您的代码粘贴到您的问题中,屏幕截图不清晰 @YCF_L 你能帮忙吗,谢谢:D 您永远不会执行该语句。你能指望什么?魔法? 我执行了该语句,但我得到了这个作为回报原因:java.lang.UnsupportedOperationException:尚不支持。在 sogeclair.connection.prepareStatement(connection.java:17) 在 sogeclair.PlanningController.btninsert(PlanningController.java:285) ... 58 更多,我回去验证,但我不明白错误在哪里跨度> (connection.java:17) ::: class connection static PreparedStatement prepareStatement(String query) throw new UnsupportedOperationException("Not supported yet."); //要更改生成方法的主体,请选择工具 |模板。 for (PlanningController.ja‌​va:285) 尝试 (PreparedStatement stm = connection.prepareStatement(query)) 【参考方案1】:

改变这个:

String query = "INSERT INTO PDFS (liste) VALUES (" +listview.getAccessibleText ()+ ")";

到这里:

String query = "INSERT INTO PDFS (liste) VALUES ('" +listview.getAccessibleText ()+ "')";

VARCHAR 类型应该介于两个''

注意 这可能会导致语法错误或 SQL 注入,而您必须使用 PreparedStatement

String query = "INSERT INTO PDFS (liste) VALUES (?)";

try (PreparedStatement stm = connection.prepareStatement(query) 
    //NOTE: Position indexes start at 1, not 0
    stm.setString(1, listview.getAccessibleText ());

    stm.executeUpdate();

【讨论】:

同样我得到了这个错误 ====== Inserting INSERT INTO PDFS (liste) VALUES ('null') Opened database successfully 我们的查询是: INSERT INTO PDFS (liste) VALUES ('null ') 成功打开数据库 因为listview.getAccessibleText () 为空,您必须在@POLOSTutorials 之前检查它 抱歉我是 java 新手做 :D ;) 我执行了该语句,但我得到了这个作为回报原因:java.lang.UnsupportedOperationException:尚不支持。在 sogeclair.connection.prepareStatement(connection.java:17) 在 sogeclair.PlanningController.btninsert(PlanningController.ja‌​va:285) ... 58 更多,我回去验证,但我不明白错误在哪里.......我收到连接错误,因为我在复制您的答案时创建了一个具有该名称的类,我不知道如何操作它。谢谢 您必须编辑您的问题并发布您尝试做的事情@POLOSTutorials

以上是关于使用 Javafx(netbeans) 在 SQLITE 数据库中插入 PDF 或任何类型的文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javafx(netbeans) 在 SQLITE 数据库中插入 PDF 或任何类型的文件

桌面版 NetBeans 中的“Java 应用程序”或“JavaFX 应用程序”?

Netbeans 上的 JavaFX

JavaFX与NetBeans开发工具的一些总结

JavaFX8 - sun.util.logging.PlatformLogger 在 NetBeans 8 中找不到异常

抛出 java.sql.SQLSyntaxErrorException:ORA-00911:无效字符,无法在 Netbeans 中找到原因 [重复]