使用 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.java: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.java: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.java:285) ... 58 更多,我回去验证,但我不明白错误在哪里.......我收到连接错误,因为我在复制您的答案时创建了一个具有该名称的类,我不知道如何操作它。谢谢
您必须编辑您的问题并发布您尝试做的事情@POLOSTutorials以上是关于使用 Javafx(netbeans) 在 SQLITE 数据库中插入 PDF 或任何类型的文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Javafx(netbeans) 在 SQLITE 数据库中插入 PDF 或任何类型的文件
桌面版 NetBeans 中的“Java 应用程序”或“JavaFX 应用程序”?
JavaFX8 - sun.util.logging.PlatformLogger 在 NetBeans 8 中找不到异常
抛出 java.sql.SQLSyntaxErrorException:ORA-00911:无效字符,无法在 Netbeans 中找到原因 [重复]