【问题标题】:Creating user other from root in mysql from java从java中的mysql中的root创建用户other
【发布时间】:2020-02-14 09:22:22
【问题描述】:

我正在尝试使用 java 代码在 Mysql 数据库 中创建一个新用户,但该代码不起作用。这是初始化数据库连接并创建用户、设置密码等的数据库类

package app;

import com.mysql.cj.jdbc.MysqlDataSource;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

public class Database {

    public static MysqlDataSource dataSource;

    public static void InitializeData() {
        dataSource = new MysqlDataSource();
        dataSource.setUser("Quiz");
        dataSource.setPassword("Give the quiz");
        dataSource.setServerName("localhost");
        dataSource.setPort(3306);
        dataSource.setDatabaseName("QUIZDATA");


        Connection con = Main.getConnection();
        try {
            Statement st2 = con.createStatement();
            st2.execute("CREATE TABLE IF NOT EXISTS Subject1(Question VARCHAR, Option1  VARCHAR, Option2 VARCHAR, Option3 VARCHAR, Option4 VARCHAR, Answer VARCHAR)");
        } 
            catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

这是我的主课。

package app;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.stage.Stage;    
import java.sql.Connection;
import java.sql.SQLException;

public class Main extends Application {

    @Override
            public void start(Stage stage) throws Exception
            {
                Parent scene = FXMLLoader.load(getClass().getResource("quiz.fxml"));
                stage.setTitle("Quiz");
                stage.setScene(new Scene(scene));
                stage.show();
            }

    public static void main(String[] args)
    {
        launch(args);
        Database.InitializeData();
    }


    public static Connection getConnection()
    {
        Connection con = null;
        try
        {
            con = Database.dataSource.getConnection();
        }
        catch (SQLException e)
        {
            Alert alert = new Alert(Alert.AlertType.ERROR, "Database error", ButtonType.OK);
            alert.showAndWait();
        }

        return con;
    }

}

但是当我在 Mysql 工作台 中扫描任何新服务器时,它没有显示任何新服务器。

添加:-当我右键单击空白区域(Mysql Workbench)时,有一个选项“从剪贴板添加连接"(虽然我不知道它在做什么),但它返回一个错误:- "Could not parse connection parameters from string "Give the quiz"“(这是密码)”

【问题讨论】:

    标签: java mysql datasource


    【解决方案1】:

    但是当我在 Mysql 工作台中扫描任何新服务器时,它 没有显示任何新服务器。

    这与您的程序无关。首先,您需要确保您的 MySQL 数据库正在运行,然后尝试执行您的程序。

    除此之外,尽管一旦确保 MySQL 服务器启动并运行,您就可以运行您的程序,但您的程序设计得并不好,例如你应该考虑以下几点:

    1. MysqlDataSource dataSource 应该标记为 private 然后你应该有 public getter
    2. Connection getConnection() 应该在你的 class Database 中定义
    3. class Database 中应该有构造函数和字段 getter 和 setter

    请注意,上述几点只是一些建议,并非完整列表。我建议您充分了解 OOPS 概念并将其应用到您的所有程序中。

    【讨论】:

    • 服务器正在运行但仍然是同样的问题。当我打开 Mysql Workbench 并右键单击空白区域时,有一个“从剪贴板添加连接”选项(虽然我不知道它在做什么),它返回一个错误:-“不能从字符串“Give the quiz”(即密码)“ 中解析连接参数
    • @DujanaAbrar - 我不知何故错过了你的评论。在寻找其他东西时,我刚刚看到了这个页面。我不确定此解决方案是否适合您,或者您实施了不同的解决方案。如果您实施了不同的解决方案,那么如果您共享相同的解决方案将会很有帮助。无论哪种情况,您都可以通过接受对您有用的答案来帮助社区。接受的答案有助于未来的访问者自信地使用该解决方案。查看meta.stackexchange.com/questions/5234/… 了解如何操作。
    猜你喜欢
    • 2013-07-08
    • 1970-01-01
    • 2017-04-30
    • 2017-10-22
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    相关资源
    最近更新 更多