Hallo zusammen,
ich sitze zurzeit an einem kleinen Tool zur MySQL Datenbank Verwaltung. Ich habe mich bis jetzt noch nicht sonderlich viel mit Java in Verbindung mit MySQL auseinandergesetzt aber bis jetzt habe ich eigentlich das umsetzen können, was ich wollte. Das Programm funktioniert wunderbar - abgesehen von einigen kleinen Bugs - wenn ich mich auf meinen lokalen MySQL Server verbinde.
Wenn ich mich jedoch extern auf einen MySQL Server, mit den gleichen Datenbanken verbinden möchte, braucht er ca 3 Minuten, um sich zu Verbinden und um "SHOW DATABASES" auszuführen.
An was kann das liegen? Ich habe euch hier im Topic meine Hauptklasse beigelegt. Wenn es gewünscht ist stelle ich noch die anderen Klassen zur Verfügung.
ich sitze zurzeit an einem kleinen Tool zur MySQL Datenbank Verwaltung. Ich habe mich bis jetzt noch nicht sonderlich viel mit Java in Verbindung mit MySQL auseinandergesetzt aber bis jetzt habe ich eigentlich das umsetzen können, was ich wollte. Das Programm funktioniert wunderbar - abgesehen von einigen kleinen Bugs - wenn ich mich auf meinen lokalen MySQL Server verbinde.
Wenn ich mich jedoch extern auf einen MySQL Server, mit den gleichen Datenbanken verbinden möchte, braucht er ca 3 Minuten, um sich zu Verbinden und um "SHOW DATABASES" auszuführen.
An was kann das liegen? Ich habe euch hier im Topic meine Hauptklasse beigelegt. Wenn es gewünscht ist stelle ich noch die anderen Klassen zur Verfügung.
Java:
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
public class PatDatabaseManager extends JFrame
{
JButton b1, b2;
JPanel panel;
LoadTable loadtable;
JComboBox showDatabases, showTables;
JTable tab;
String[] databases;
String table = "TABLES";
static String[][] data;
static int cols;
static int rows;
static String[] field;
String database = "information_schema";
JMenuBar mb;
JMenu datei, bearbeiten, hilfe;
JMenuItem beenden, about;
public PatDatabaseManager()
{
setSize(800,600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
mb = new JMenuBar();
mb.setBounds(1, 1, getWidth(), 20);
add(mb);
datei = new JMenu("Datei");
mb.add(datei);
bearbeiten = new JMenu("Bearbeiten");
mb.add(bearbeiten);
hilfe = new JMenu("Hilfe");
mb.add(hilfe);
about = new JMenuItem("About");
hilfe.add(about);
about.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showConfirmDialog(null, "Database-Manager for MySQL v0.3 by Patrick Farnkopf", "About", JOptionPane.CLOSED_OPTION);
}
});
beenden = new JMenuItem("Beenden");
datei.add(beenden);
beenden.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
dispose();
}
});
databases = loadtable.GetDatabases();
showDatabases = new JComboBox();
showTables = new JComboBox();
setTitle("Database-Manager for MySQL");
for (int itr = 0; itr < databases.length; itr++)
{
showDatabases.addItem(databases[itr]);
}
b2 = new JButton("Export to CSV");
b2.setBounds(10, 150, 150, 25);
add(b2);
b2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
JFileChooser fc = new JFileChooser();
fc.showSaveDialog(null);
PrintStream ps = new PrintStream(fc.getSelectedFile());
for (int itr = 0; itr < rows; itr++)
{
for (int iitr = 0; iitr < cols; iitr++)
{
if (data[iitr][itr] == null)
ps.print("0,");
else
ps.print(data[iitr][itr]+",");
}
ps.println();
}
JOptionPane.showConfirmDialog(null, "Export erfolgreich", "SQL2CSV", JOptionPane.CLOSED_OPTION);
} catch (Exception x){}
}
});
showDatabases.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
showTables.removeAllItems();
String cbDB = showDatabases.getItemAt(showDatabases.getSelectedIndex()).toString();
database = cbDB;
System.out.println(cbDB);
String[] tables = loadtable.GetTables(cbDB);
for (int itr = 0; itr < tables.length; itr++)
{
System.out.println(tables[itr]);
showTables.addItem(tables[itr]);
}
}
});
showTables.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (showTables.getItemCount() != 0)
table = showTables.getItemAt(showTables.getSelectedIndex()).toString();
data = new String[cols][rows];
field = loadtable.GetFields(table, database);
cols = loadtable.GetFields(table, database).length;
rows = loadtable.GetRowCount(table, database);
data = new String[cols][rows];
for (int colItr = 0; colItr < cols; colItr++)
{
String[] temp = loadtable.GetData(table, database, colItr);
for (int rowItr = 0; rowItr < rows; rowItr++)
{
data[colItr][rowItr] = temp[rowItr];
System.out.println(data[colItr][rowItr]);
}
}
((AbstractTableModel)tab.getModel()).fireTableStructureChanged();
((AbstractTableModel)tab.getModel()).fireTableDataChanged();
}
});
showDatabases.setBounds(10, 30, 150, 20);
add(showDatabases);
showTables.setBounds(10, 60, 150, 20);
add(showTables);
b1 = new JButton("Refresh");
b1.setBounds(10, 100, 150, 25);
add(b1);
b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
((AbstractTableModel)tab.getModel()).fireTableStructureChanged();
((AbstractTableModel)tab.getModel()).fireTableDataChanged();
}
});
loadtable = new LoadTable();
panel = new JPanel();
panel.setBounds(60, 25, 800, 800);
field = loadtable.GetFields(table, database);
cols = loadtable.GetFields(table, database).length;
rows = loadtable.GetRowCount(table, database);
data = new String[cols][rows];
for (int colItr = 0; colItr < cols; colItr++)
{
String[] temp = loadtable.GetData(table, database, colItr);
for (int rowItr = 0; rowItr < rows; rowItr++)
{
data[colItr][rowItr] = temp[rowItr];
}
}
tab = new JTable(new AbstractTableModel()
{
public int getColumnCount()
{
return GetColumns();
}
public int getRowCount()
{
return GetRows();
}
public boolean isCellEditable(int z, int s)
{
return true;
}
public Object getValueAt(int z, int s)
{
return GetData()[s][z];
}
public void setValueAt(Object v, int z, int s)
{
}
public String getColumnName(int index)
{
return GetField()[index];
}
});
tab.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane sp = new JScrollPane(tab);
sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
panel.add(sp);
add(panel);
setVisible(true);
}
static String[][] GetData()
{
return data;
}
static String[] GetField()
{
return field;
}
static int GetRows()
{
return rows;
}
static int GetColumns()
{
return cols;
}
public static void main(String[] args)
{
new LoginWindow();
}
}