Verbindung zu MySQL-Datenbank

Status
Nicht offen für weitere Antworten.

Long

Mitglied
Hallo!

Ich schreibe meine Programme mit Eclipse und würde nun auch gerne auf eine MySQL Datenbank zugreifen. Allerdings habe ich damit noch keine Erfahrung. Ich habe XAMPP laufen, was muss ich da jetzt noch installieren?
Ich hab irgendwas von Driver Manager und Driver gehört. Wie funktioniert die Installation?
Wäre dankbar wenn mir jemand kurz erklären könnte was für Schritte ich durchführen muss!

Vielen Dank!
 

sliwalker

Top Contributor
Hoi,

such mal im Inet nach mysql connector. Bei google gibts da einiges. Den lädst Du Dir runter und packst ihn irgendwo hin.
Dem Projekt, mit dem Du den Zugriff machen willst, fügst Du dann unter:

Properties
(links)Java Build Path
(rechts oben)Libraries
(rechts mitte)Add External JARs

Deine mysqlconnector.zip oder jar hinzu.
Fertig.

Im Programm musst Du ihn dann so verwenden:
Code:
		try
		{
			Class.forName("com.mysql.jdbc.Driver");
		    String strSQLConnection = "jdbc:mysql://hostname/datenbankname"; 
		    con = DriverManager.getConnection(strSQLConnection, "username","passwort"); 
}

greetz
SLi
 

André Uhres

Top Contributor
ODBC Variante:
Download MySQL ODBC Driver

Das folgende Programm soll dir helfen, die ODBC Datenquelle in Windows anzulegen
indem es den ODBC Administrator aufruft und eine kleine Anleitung dazu gibt:
Code:
package jdbc;
/*
 * Daten_Quellen.java
 */
import java.awt.*;
import javax.swing.*;
public class Daten_Quellen extends JFrame {
    public Daten_Quellen() {
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setTitle("Datenquellen");
        JOptionPane.showMessageDialog(this, "<html>Zuerst müssen wir MySql vorbereiten: " +
                "
Programme | MySql | MySql Server | ..."
                +"<table><tr>"
                +"<tr><td>1. Server:<td>... MySql Server Instance Config Wizard"
                +"<tr><td><td>Next-Button klicken bis zu 'PLease set the security options.'"
                +"<tr><td><td>root-password angegeben"
                +"<tr><td><td>Create An Anonymous Account --> Haken dran machen "
                +"<tr><td><td>Next->Execute->Finish"
                +"<tr>"
                +"<tr>"
                +"<tr><td>2. Datenbank:<td>... MySql Command Line Client"
                +"<tr><td><td>root password angeben"
                +"<tr><td><td>create database meinedb"
                +"<tr><td><td>;"
                +"<tr><td><td>quit"
                );
        JTextArea textarea = new JTextArea();
        textarea.setEditable(false);
        textarea.setBackground(new Color(255, 255, 204));
        textarea.setFont(new Font("SansSerif", 1, 13));
        textarea.setText("Du nimmst jetzt den Reiter 'Benutzer-Datenquellen/Benutzer-DSN' (erster Reiter) \n" +
                "und klickst du auf den Knopf 'Hinzufügen...' \n" +
                "Jetzt erscheint die Treiber-Liste. \n" +
                "Du wählst du den Treiber 'MySQL ODBC 3.51 Driver' (oder so ähnlich) \n" +
                "und klickst auf 'Fertig stellen'. Das war's dann für 'Windows'. \n\n" +
                "Jetzt erscheint aber noch ein Fenster von 'MySQL'. \n\n" +
                "Im ersten Reiter 'Login' gibt du dies an: \n" +
                "Data source name = meinedb\n" +
                "User = ODBC \n" +
                "Database = meinedb\n\n" +
                "Dann 'OK' klicken, und nochmals 'OK'. \n" +
                "Fertig!");
        getContentPane().add(new JScrollPane(textarea));
        try{Runtime.getRuntime().exec("c:\\windows\\system32\\odbcad32.exe");
        }catch (Exception ex) {
            try{Runtime.getRuntime().exec("c:\\winnt\\system32\\odbcad32.exe");
            }catch (Exception ex2) { ex2.printStackTrace();}
        }
        setExtendedState(JFrame.MAXIMIZED_BOTH);
    }
    public static void main(String args[]) { new Daten_Quellen().setVisible(true); }
}
Und hier ist eine kleine Test-Anwendung
(du musst den "SwingWorker" Code laden und kompilieren um ihn benutzen zu können, hier ist er: SwingWorker):

Code:
package jdbc;
/*******************************************************************************************
 * QueryDemo.java
 *******************************************************************************************/
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import javax.swing.table.*;
public class QueryDemo extends JFrame {
    public QueryDemo() {
        initComponents();
        try{
            DriverManager.registerDriver( new sun.jdbc.odbc.JdbcOdbcDriver() );
            connectDB();
            textarea.setText("Verbindung erstellt zur Datenbank '" +Names.DATABASE_NAME+ "'\n");
            setTitle(getTitle()+":  "+Names.DATABASE_NAME);
        }catch(SQLException ex){
            textarea.setText("Verbindung fehlerhaft\n");
            JOptionPane.showMessageDialog( this, ex.getMessage(),
                    "MySQL Demo:   SQLException", JOptionPane.ERROR_MESSAGE);
        }
    }
    private void initComponents() {
        toolbar = new JToolBar();
        queryButton = new JButton();
        createTableButton = new JButton();
        dropTableButton = new JButton();
        panel1 = new JPanel();
        progressbar = new JProgressBar();
        scrollpane = new JScrollPane();
        textarea = new JTextArea();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setTitle("MySQL Demo");
        toolbar.setFloatable(false);
        queryButton.setText("Query");
        queryButton.setPreferredSize(new Dimension(100, 22));
        queryButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                queryButtonActionPerformed(evt);
            }
        });
        toolbar.add(queryButton);
        createTableButton.setText("Create Table");
        createTableButton.setPreferredSize(new Dimension(100, 22));
        createTableButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                createTableButtonActionPerformed(evt);
            }
        });
        toolbar.add(createTableButton);
        dropTableButton.setText("Drop Table");
        dropTableButton.setPreferredSize(new Dimension(100, 22));
        dropTableButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                dropTableButtonActionPerformed(evt);
            }
        });
        toolbar.add(dropTableButton);
        getContentPane().add(toolbar, BorderLayout.NORTH);
        panel1.setLayout(new BorderLayout());
        progressbar.setMaximum(MAXROWS);
        progressbar.setStringPainted(true);
        progressbar.setVisible(false);
        panel1.add(progressbar, BorderLayout.NORTH);
        textarea.setBackground(new Color(255, 255, 204));
        textarea.setEditable(false);
        scrollpane.setViewportView(textarea);
        panel1.add(scrollpane, BorderLayout.CENTER);
        getContentPane().add(panel1, BorderLayout.CENTER);
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-600)/2, (screenSize.height-400)/2, 600, 400);
        queryButton.getRootPane().setDefaultButton(queryButton);
        setVisible(true);
    }
    private void dropTableButtonActionPerformed(ActionEvent evt) {
        scrollpane.setViewportView(textarea);
        try{
            dropTable();
        }catch(SQLException ex){
            JOptionPane.showMessageDialog( this, ex.getMessage(),
                    "MySQL Demo:   SQLException", JOptionPane.ERROR_MESSAGE);
        }
    }
    private void dropTable() throws SQLException{
        if( connection!=null ){
            int result = JOptionPane.showConfirmDialog(this,"Daten gehen verloren !" +
                    "\nWillst du wirklich die Daten von '" + Names.TABLE_NAME + "' löschen ?",
                    "MySQL Demo:   Drop Table Confirmation", JOptionPane.YES_NO_OPTION);
            if( result == JOptionPane.YES_OPTION ){
                try{
                    statement = connection.createStatement();
                    statement.executeUpdate("drop table " + Names.TABLE_NAME);
                    textarea.setText("'" + Names.TABLE_NAME + "' gelöscht!");
                }finally{
                    if(statement!=null){
                        statement.close();
                    }
                }
            }
        }
    }
    private void createTableButtonActionPerformed(ActionEvent evt) {
        worker = new SwingWorker() {
            public Object construct() {
                textarea.setText("Daten werden erstellt in '" +Names.TABLE_NAME+ "'  ( " +MAXROWS + " Zeilen ) ...");
                setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                progressbar.setVisible(true);
                try{
                    createTable();
                }catch(SQLException ex){
                    JOptionPane.showMessageDialog( null, ex.getMessage(),
                            "MySQL Demo:   SQLException", JOptionPane.ERROR_MESSAGE);
                }
                textarea.setText("");
                progressbar.setVisible(false);
                setCursor(Cursor.getDefaultCursor());
                return null;
            }
        };
        worker.start();
    }
    private void queryButtonActionPerformed(ActionEvent evt) {
        setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        resultset = new JTable(0,3);
        QueryWorker.runQuery(new Thread( new QueryWorker( "SELECT host, db, Table_id FROM " + Names.TABLE_NAME, resultset ) ));
        scrollpane.setViewportView(resultset);
        setCursor(Cursor.getDefaultCursor());
    }
    private void createTable() throws SQLException{
        progressbar.setValue(0);
        progressbar.setString("0 rows");
        if( connection!=null ){
            try{
                statement = connection.createStatement();
                statement.executeUpdate(sqlCreateTable);
                countProgress=0;
                for( countRows=1; countRows <= MAXROWS; countRows++ ){
                    countProgress++;
                    if(countProgress==100){
                        progressbar.setValue(countRows);
                        progressbar.setString(countRows+" rows");
                        countProgress=0;
                    }
                    String countRowsString = ""+countRows;
                    String countText = ZEROS.substring(0, ZEROS.length()-countRowsString.length())+countRowsString;
                    String sqlInsert = "INSERT INTO " + Names.TABLE_NAME +
                            " (Host,Db,User,Table_id,Grantor) " +
                            "values ( 'pc', 'text', 'uan', 0, 'random')";
                    statement.executeUpdate(sqlInsert);
                }
            }finally{
                if(statement!=null)statement.close();
            }
        }
    }
    private void connectDB() throws SQLException{
        String url = "jdbc:odbc:" + Names.DATABASE_NAME;
        System.out.println(url);
        connection = DriverManager.getConnection(url);
    }
    public static void main(String args[]) {
        new QueryDemo();
    }
       /*
     Du musst den "SwingWorker" code laden und kompilieren um ihn benutzen zu können.
     Hier ist er:
     [url]http://java.sun.com/products/jfc/tsc/articles/threads/src/SwingWorker.java[/url]
        */
    private SwingWorker worker ;
    
    private JButton queryButton;
    private JButton createTableButton;
    private JButton dropTableButton;
    private JPanel panel1;
    private JProgressBar progressbar;
    private JScrollPane scrollpane;
    private JToolBar toolbar;
    private JTextArea textarea;
    private boolean running;
    private Connection connection;
    private int countProgress;
    private int countRows;
    private Statement statement;
    private JTable resultset ;
    private final String ZEROS = "00000000";
    private final Rectangle BOTTOM = new Rectangle(0,2000000000,1,1);
    private final int MAXROWS = 50000;
    private String sqlCreateTable = "CREATE TABLE " + Names.TABLE_NAME + " ("
            +" Host char(60) binary DEFAULT '' NOT NULL,"
            +" Db char(64) binary DEFAULT '' NOT NULL,"
            +" User char(16) binary DEFAULT '' NOT NULL,"
            +" Table_id int(9) auto_increment,"
            +" Grantor char(77) DEFAULT '' NOT NULL,"
            +" PRIMARY KEY (Host,Db,User,Table_id)"
            +" ) ENGINE = MyISAM ";
}
class QueryWorker implements Runnable{
    public QueryWorker(String query, JTable displayTable) {
        this.query = query;
        this.displayTable = displayTable;
        displayTableModel = (DefaultTableModel)displayTable.getModel();
    }
    public void run(){
        try{
            DriverManager.registerDriver( new sun.jdbc.odbc.JdbcOdbcDriver() );
            connectDB();
            System.out.println("Verbindung OK");
        }catch(SQLException ex){
            System.out.println("Fehler: Verbindung nicht erstellt");
            System.out.println( ex.getMessage() );
        }
        try{
            doQuery();
        }catch(SQLException ex){
            String msg = ex.getMessage();
            System.out.println( msg );
        }
        System.out.println("fertig!");
    }
    private void doQuery() throws SQLException{
        try {
            if(connection!=null){
                statement = connection.createStatement();
                resultset = statement.executeQuery(query);
                dispResultSet(resultset);
            }
        }finally{
            if(resultset!=null)resultset.close();
            if(statement!=null)statement.close();
            if(connection!=null)connection.close();
        }
    }
    private void dispResultSet(final ResultSet resultset) throws SQLException{
        int i;
        ResultSetMetaData rsmd = resultset.getMetaData();
        int numCols = rsmd.getColumnCount();
        // Spalten-Überschriften anzeigen
        for (i=1; i<=numCols ; i++) {
            tablecolumn = displayTable.getColumnModel().getColumn(i-1);
            tablecolumn.setHeaderValue( rsmd.getColumnLabel(i).toString() );
        }
        // Daten anzeigen, bis zum Ende vom "result set"
        boolean more = resultset.next();
        while ( more ) {
            // Jede Spalte durchgehen und Spalten-Daten anzeigen
            Object[] rowData = new Object[numCols];
            for (i=1; i<=numCols; i++) {
                rowData[i-1] = resultset.getString(i);
            }
            displayTableModel.addRow(rowData);
            // Nächste Zeile vom "result set" holen4
            more = resultset.next();
        }
    }
    private void connectDB() throws SQLException{
        connection = DriverManager.getConnection("jdbc:odbc:" + Names.DATABASE_NAME);
    }
    public static void runQuery(Thread queryWorker){
        queryWorker.start();
        //warten bis "query" fertig ist, aber höchstens 10 Sekunden
        for( int i=0; queryWorker.isAlive() && i<100; i++ ){
            try{
                Thread.sleep(100);
            }catch(InterruptedException ex){}
        }
    }
    private String query;
    private JTable displayTable;
    private DefaultTableModel displayTableModel ;
    private TableColumn tablecolumn ;
    private Connection connection;
    private Statement statement;
    private ResultSet resultset;
}
final class Names{
    public static final Names DATABASE_NAME = new Names("meinedb");
    public static final Names TABLE_NAME = new Names("meinetabelle");

    private final String name;
    private Names(final String name) {
        this.name = name;
    }
    public String toString(){
        return this.name;
    }
}
Beste Grüsse
André
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
A Nach Export mysql Verbindung zur Datenbank nicht möglich, was tun? Datenbankprogrammierung 7
T MySQL Kann Verbindung zur MySQL Datenbank nicht herstellen. Datenbankprogrammierung 4
N Problem mit Verbindung zu externer MySQL Datenbank Datenbankprogrammierung 8
G SSH Verbindung zur (MySQL-)Datenbank Datenbankprogrammierung 6
C Verbindung zur MySQL Datenbank scheiter. "Bad handshake Datenbankprogrammierung 2
K keine Verbindung zu mysql Datenbank Datenbankprogrammierung 11
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
P MySQL-Verbindung in anderer Klasse nutzen Datenbankprogrammierung 2
G MySQL Tables 1:1 verbindung Datenbankprogrammierung 14
N Trennt sich die Verbindung zur DB (MySQL) automatisch? Datenbankprogrammierung 3
G persistence.xml für MySQL - Verbindung Datenbankprogrammierung 6
B MySQL-Verbindung ausschließlich zu localhost möglich Datenbankprogrammierung 7
M Problem mit MYSQL Verbindung Datenbankprogrammierung 7
B MySQL Verbindung herstellen | ConnectException Datenbankprogrammierung 2
S MySQL Verbindung Datenbankprogrammierung 8
Linad persistente MySQL Verbindung oder non persistent? Datenbankprogrammierung 3
G MySQL Verbindung Datenbankprogrammierung 2
M verbindung zu mysql Datenbankprogrammierung 2
G JDBC Verbindung zu MySQL-Server auf lokalem Rechner Datenbankprogrammierung 5
G linux mysql keine verbindung Datenbankprogrammierung 8
L Wie geht Verbindung zu MySQL? Datenbankprogrammierung 5
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
OnDemand SSL Verbindung zu externer DB Datenbankprogrammierung 5
C MySQL Remote Verbindung zu MariaDB Datenbankprogrammierung 11
M SQL , CSV Verbindung : Zu Umfangreicher Code durch Unwissenheit Datenbankprogrammierung 21
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
Z Beim schließen des Programms die verbindung zur DB beenden. Datenbankprogrammierung 4
Husamoli345 JSF-JDBC Verbindung Crud Datenbankprogrammierung 15
V keine Verbindung möglich (Access-DB) Datenbankprogrammierung 3
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
M Oracle SQLException: Verbindung getrennt Datenbankprogrammierung 2
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
C Verbindung mit SQLExpress Datenbankprogrammierung 9
S E(fx)clipse Verbindung zu MS SQL Express aufbauen Datenbankprogrammierung 7
M H2 Verbindung zur Datenbank komplett schließen Datenbankprogrammierung 11
F MySQL Verbindung zum SQL-Server Datenbankprogrammierung 27
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
C datenbank verbindung config Datenbankprogrammierung 23
I MariaDB-Verbindung in JAVA Datenbankprogrammierung 11
J Verbindung aufbauen Datenbankprogrammierung 7
S DB2 Express C - keine Verbindung zur Datenbank Datenbankprogrammierung 2
I Es kann keine Verbindung zum Server aufgebaut werden Datenbankprogrammierung 12
Thallius MySQL Merkwürdiges JDBC Verhalten bei VPN Verbindung. Datenbankprogrammierung 7
W Keine ODBC-Verbindung zur MSAccess-Datenbank Datenbankprogrammierung 2
S Auslagern der Datenbank Verbindung Datenbankprogrammierung 2
M Verbindung von Java Programm zur Acccess Datenbank (mdb-Datei) Datenbankprogrammierung 0
D NullPointerException bei DB Verbindung Datenbankprogrammierung 6
AssELAss Verbindung i5 Series 7.1 / 7.2 (DB2) mit Oracle SQL Developer Datenbankprogrammierung 3
J Verbindung zu Derby Datenbank funktioniert nicht Datenbankprogrammierung 14
M MySQL Verbindung zum Server aufbauen ohne DB ansprechen Datenbankprogrammierung 2
D Java MS Access Verbindung Datenbankprogrammierung 10
X MySQL DB-verbindung ohne JDBC/ODBC Datenbankprogrammierung 1
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
A Verbindung mit Access 2007 Datenbank herstellen Datenbankprogrammierung 1
I Datenbank Verbindung geht nicht Datenbankprogrammierung 2
N MySQL com.microsoft.sqlserver.jdbc.SQLServerException: Die Verbindung wurde geschlossen. Datenbankprogrammierung 1
1 MySQL Verbindung mit localhost als IP funktioniert, aber mit normaler IP nicht Datenbankprogrammierung 2
Helgon H2 Verbindung öffnen/schließen - Dauer, wann, wie lange? Datenbankprogrammierung 2
J Verbindung zu Access Datenbank Datenbankprogrammierung 15
J Verbindung zu Datenbank herstellen Datenbankprogrammierung 26
P MySQL Verbindung nach außen sehr langsam Datenbankprogrammierung 4
P JDBC Verbindung zur DB klappt nicht Datenbankprogrammierung 6
J Java - JDBC Verbindung zur Datenbank nicht möglich Datenbankprogrammierung 10
T MySQL Sichere Verbindung Datenbankprogrammierung 6
S Google Web Toolkit LDAP - Verbindung Datenbankprogrammierung 2
pg1337 Verbindung mit postgres - eclipse Datenbankprogrammierung 4
M Verbindung mit MSSQL hängt! Datenbankprogrammierung 2
cover1012 Derby/JavaDB Verbindung mit FTP-Server Datenbankprogrammierung 13
T NullPointerException bei Verbindung zur Datenbank Datenbankprogrammierung 4
J DB2 Verbindung zu AS400 Datenbankprogrammierung 6
F PostgreSQL JPA und Hibernate - Verbindung zur DB Datenbankprogrammierung 7
J MySQL Verbindung über JDBC scheitert immer Datenbankprogrammierung 2
M MySQL getConnection - Verbindung Problem Datenbankprogrammierung 2
T mdb Verbindung ohne Registrierung der Datenquelle im OS Datenbankprogrammierung 14
K MySQL Verbindung funktioniert in Netbeans aber .jar funktioniert nicht Datenbankprogrammierung 5
jeppi MySQL Design-Problem: DB-Verbindung herstellen und halten - JdbcRowSet / Idle-Timeout? Datenbankprogrammierung 9
S Hibernate in Verbindung mit Hsql Datenbankprogrammierung 2
D Oracle Verbindung mit Java zu Datenbank Datenbankprogrammierung 8
F MSSQL-Server Verbindung Datenbankprogrammierung 5
E Hibernate Problem bei bidirektionaler 1:n Verbindung Datenbankprogrammierung 2
DStrohma MS SQL Server 2005 + Java: Immer nur eine aktive Verbindung erlaubt? Datenbankprogrammierung 5
B JDBC Verbindung mit Postgresql Datenbankprogrammierung 13
U MSSQL Verbindung steht, aber meckert beim Statement Datenbankprogrammierung 2
G JDBC-Verbindung: User wechseln Datenbankprogrammierung 2
F Kann keine Verbindung mit HSQLDB aufbauen Datenbankprogrammierung 2
X JDBC Verbindung in einer Funktion Datenbankprogrammierung 9
O HSQLDB Verbindung schlägt fehl Datenbankprogrammierung 3
C DB2/AS400 Verbindung Datenbankprogrammierung 2
T Form, Verbindung Feld -> DB Datenbankprogrammierung 3
J Verbindung zur Datenbank schlägt fehl... Datenbankprogrammierung 2
C keine Verbindung zur MS-SQL-Datenbank mehr Datenbankprogrammierung 4
Y Keine verbindung mit der Datenbank Datenbankprogrammierung 2
G verbindung 2er Tabellen Datenbankprogrammierung 3
C Keine Verbindung Datenbankprogrammierung 12
G 2 Tabellen in einer 1:n Verbindung Datenbankprogrammierung 2
G Verbindung mit Eclipse auf Datenbank einrichten Datenbankprogrammierung 3
M Verbindung zu Oracle DB Datenbankprogrammierung 4
U *.mdb Datenbank Verbindung mit Pfadangabe Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben