我在将javafx程序连接到MySQL数据库时遇到问题。我试图连接一个我正在制作的实际程序,但是开始尝试连接一个基本上空白的程序,该程序仅连接到数据库并打印那里的内容,因此至少我知道我的连接很好。我正在使用intellij和mysql工作台。我刚刚从笔记本电脑中删除了所有mysql内容,然后重新安装了它。我在那里遇到了问题,但是了解了如何正确删除并重新安装它。由于我的mysql连接器j,数据库无法连接是我非常没有道理的选择。我忘记下载了什么,因为已经很久了,但是我认为我刚下载的mysql是8.0.20版本,但是我的程序仅接受6.0.5。这是各种图像和代码片段。 [我更改了我的代码中的一件事,现在已连接!!!]]好,因此,在编写本文时,我更改了一些内容并已连接。看来我正在混用两个版本的连接器。
sample.fxml <?import javafx.scene.control.Button?> <?import javafx.scene.layout.BorderPane?> <BorderPane fx:controller="sample.Controller" xmlns:fx="http://javafx.com/fxml"> <center> <Button text="Test Database" onAction="#testDBConnection"/> </center> </BorderPane>`
ConnectionUtil
package sample; import java.sql.Connection; import java.sql.DriverManager; public class ConnectionUtil { public static Connection conDB(){ try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/quizdb?useSSL=false", "root", "hockey"); System.out.println("Connected"); return con; } catch (Exception ex) { System.out.println("no connection"); return null; } } }
控制器
package sample; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Controller { Connection con = ConnectionUtil.conDB(); PreparedStatement preparedStatement = null; ResultSet resultSet = null; public void testDBConnection(){ String sql = "select * from question"; try { preparedStatement = con.prepareStatement(sql); resultSet = preparedStatement.executeQuery(); if(!resultSet.next()){ System.out.println("End of questions"); } else { int questionId = Integer.parseInt(resultSet.getObject("id").toString()); String question = resultSet.getObject("question").toString(); String correctAnswer = resultSet.getObject("correctAnswer").toString(); System.out.println("Question# " + questionId + "\nQuestion: " + question + "\nCorrect Answer: " + correctAnswer); } } catch (SQLException throwables) { throwables.printStackTrace(); } } }
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>kruzel.rob</groupId> <artifactId>TestConnection</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.5</version> </dependency> </dependencies> </project>
这里是我的mysql数据库,项目结构,外部库等的图片。>
external libraries/project structure
所以我想我现在的问题是,为什么在pom.xml版本中需要6.0.5,但是我的外部库链接到8.0.20?它们最初链接到6.0.5,但我无法连接,因此我下载了8.0.20 jar和source.jar并添加了它们。我知道连接终于可以正常工作了,但想了解这里发生了什么。预先感谢您的帮助!
我在将javafx程序连接到MySQL数据库时遇到问题。我正在尝试连接我正在制作的实际程序,但是开始尝试连接的基本上是一个仅...
如我的评论中所述,这是因为MySQL类名称已更改,旧类名称已被弃用。在这里阅读:MySQL Docs