From c92292acbb9701d2dd02ecd8b6790cc8a61fc6ee Mon Sep 17 00:00:00 2001 From: The-Tysonator Date: Mon, 24 Apr 2023 15:05:40 +0100 Subject: [PATCH] initial commit --- .gitignore | 4 + src/Database.java | 59 ++++++++++++ src/Interface.form | 85 +++++++++++++++++ src/Interface.java | 38 ++++++++ src/Login.form | 116 ++++++++++++++++++++++++ src/Login.java | 43 +++++++++ src/Main.java | 18 ++++ src/images/icon.png | Bin 0 -> 7073 bytes src/jar/mysql-connector-java-8.0.25.jar | Bin 0 -> 2428320 bytes 9 files changed, 363 insertions(+) create mode 100644 .gitignore create mode 100755 src/Database.java create mode 100755 src/Interface.form create mode 100755 src/Interface.java create mode 100755 src/Login.form create mode 100755 src/Login.java create mode 100755 src/Main.java create mode 100755 src/images/icon.png create mode 100755 src/jar/mysql-connector-java-8.0.25.jar diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6452162 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.DS_STORE +.idea/ +Java SQL Interface.iml +out/ \ No newline at end of file diff --git a/src/Database.java b/src/Database.java new file mode 100755 index 0000000..2e14c8f --- /dev/null +++ b/src/Database.java @@ -0,0 +1,59 @@ +// Imports +import java.sql.*; + +// Database Class +public class Database { + + // Variables + private Connection connection; + private Statement statement; + + // Setup Method + public void setup (String url, String username, String password) throws SQLException { + // Set Variables + this.connection = DriverManager.getConnection(url, username, password); + this.statement = this.connection.createStatement(); + } + + // Is Setup Method + public boolean isSetup () { + // Return Setup + return this.connection != null && this.statement != null; + } + + // Query Method + public String query (String sql) { + // Catch Errors + try { + // Execute Query + ResultSet results = this.statement.executeQuery(sql); + ResultSetMetaData resultsMetaData = results.getMetaData(); + // Create Result + StringBuilder result = new StringBuilder(); + // Create Header + for (int counter = 1; counter <= resultsMetaData.getColumnCount(); counter++) { + result.append(resultsMetaData.getColumnName(counter)); + if (counter != resultsMetaData.getColumnCount()) { + result.append(" - "); + } + } + result.append("\n"); + // Create Content + while (results.next()) { + for (int counter = 1; counter <= resultsMetaData.getColumnCount(); counter++) { + result.append(results.getString(counter)); + if (counter != resultsMetaData.getColumnCount()) { + result.append(" - "); + } + } + result.append("\n"); + } + // Return Result + return result.toString(); + } catch (Exception exception) { + // Return Result + return "Query Invalid"; + } + } + +} \ No newline at end of file diff --git a/src/Interface.form b/src/Interface.form new file mode 100755 index 0000000..f7bc6b5 --- /dev/null +++ b/src/Interface.form @@ -0,0 +1,85 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Interface.java b/src/Interface.java new file mode 100755 index 0000000..6966005 --- /dev/null +++ b/src/Interface.java @@ -0,0 +1,38 @@ +// Imports +import javax.swing.*; + +// Interface Class +public class Interface extends JFrame { + + // Components + private JPanel panel; + private JTextArea queryInputField; + private JTextArea queryOutputField; + private JButton queryButton; + + // Interface Method + public Interface(Database database) { + // Create Windows + setTitle("MySQL Query Tool"); + setResizable(false); + setSize(600, 300); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setContentPane(panel); + setVisible(true); + // Query Button Clicked + queryButton.addActionListener( e -> { + // Update Button + queryButton.setText("Querying"); + // Get Query + String query = queryInputField.getText(); + try { + queryOutputField.setText(database.query(query)); + } catch (Exception ex) { + queryOutputField.setText("Error"); + } + // Update Button + queryButton.setText("Query"); + }); + } + +} \ No newline at end of file diff --git a/src/Login.form b/src/Login.form new file mode 100755 index 0000000..86efaef --- /dev/null +++ b/src/Login.form @@ -0,0 +1,116 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Login.java b/src/Login.java new file mode 100755 index 0000000..ad61467 --- /dev/null +++ b/src/Login.java @@ -0,0 +1,43 @@ +// Imports +import javax.swing.*; + +// Login Class +public class Login extends JFrame { + + // Components + private JPanel panel; + private JLabel image; + private JTextField urlField; + private JTextField usernameField; + private JPasswordField passwordField; + private JButton submitButton; + + // Login Method + public Login(Database database) { + // Create Window + setTitle("MySQL Query Tool"); + setResizable(false); + setSize(600, 300); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setContentPane(panel); + setVisible(true); + // Submit Button Clicked + submitButton.addActionListener( e -> { + // Update Button + submitButton.setText("Connecting"); + // Get Field Data + String url = urlField.getText(); + String username = usernameField.getText(); + String password = passwordField.getText(); + // Create Connection + try { + database.setup("jdbc:mysql://" + url, username, password); + setVisible(false); + dispose(); + } catch (Exception exception) { + submitButton.setText("Login"); + } + }); + } + +} \ No newline at end of file diff --git a/src/Main.java b/src/Main.java new file mode 100755 index 0000000..55ab9a6 --- /dev/null +++ b/src/Main.java @@ -0,0 +1,18 @@ +// Main Class +public class Main { + + // Database + public static Database database = new Database(); + + // Main Method + public static void main (String []args) { + // Login + new Login(database); + while (!database.isSetup()) { + System.out.println(database.isSetup()); + } + // Interface + new Interface(database); + } + +} \ No newline at end of file diff --git a/src/images/icon.png b/src/images/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..8e7db8b3cb18e6925dadad51919fef522a69da34 GIT binary patch literal 7073 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 literal 0 HcmV?d00001 diff --git a/src/jar/mysql-connector-java-8.0.25.jar b/src/jar/mysql-connector-java-8.0.25.jar new file mode 100755 index 0000000000000000000000000000000000000000..3db626b13161067ef7ec71640398ca3b468fdc13 GIT binary patch literal 2428320 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