Создание другого пользователя от root в MySQL из Java - PullRequest
1 голос
/ 17 октября 2019

Я пытаюсь создать нового пользователя в базе данных Mysql , используя код Java, но код не работает. Это класс базы данных , который инициализирует соединение с базой данных и создает пользователя , устанавливает пароль и т. Д.

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();
        }
    }
}

А вот мой Mainclass.

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 Workbench он не показывает никакого нового сервера.

Добавить: - Когда я щелкаю правой кнопкой мыши по пустой области (Mysql Workbench), появляется опция " для добавления соединений из буфера обмена "( Хотя я не знаю, что он делает ), он возвращает ошибку: -" Не удалось проанализировать параметры подключения из строки "Give the quiz" "(это пароль)"

1 Ответ

2 голосов
/ 17 октября 2019

Но когда я сканирую любой новый сервер в рабочей среде Mysql, он не показывает никакого нового сервера.

Это не связано с вашей программой. Во-первых, вам нужно убедиться, что ваша база данных MySQL запущена, а затем попытаться выполнить вашу программу.

Кроме этого, вы сможете запустить свою программу, как только убедитесь, что ваш сервер MySQL запущен иработает, ваша программа не была разработана должным образом, например, вы должны учитывать следующее:

  1. MysqlDataSource dataSource должен быть помечен как private, а затем вы должны иметь public геттер для него
  2. Connection getConnection() должен быть определен в вашем class Database
  3. В вашем class Database

должны быть конструкторы и полевые геттеры и сеттеры * Обратите внимание, что вышеупомянутые пунктыЭто всего лишь несколько рекомендаций, и это не полный список. Я рекомендую вам хорошо понимать концепцию OOPS и применять ее во всех своих программах.

...