PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MYSQL DB auslesen


aVenger
2004-03-29, 19:16:09
Ich muss ein Java Programm schreiben welches eine MYSQL Datenbank ausliest.
Datenbank und Table heisen artikel. Ich habe 3 Spalten angelegt (Nummer, ArtNr, Bezeichnung, Preis). Wie genau kann ich die angelegte Datenbank ins Java Programm einlesen.



Quellcode:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;

public class JDBCSwing1 extends JFrame
{
// Instanzvariable festlegen
JButton jbDaten = new JButton("Datensatz einfügen");
JPanel jpEingabe = new JPanel();
JTextField jtfFamname = new JTextField(40);
JTextField jtfVorname = new JTextField(40);
JTextField jtfGebDatum = new JTextField(40);

// Konstruktor
public JDBCSwing1()
{
super("Datenbankzugriff");
Container c = getContentPane();
c.setLayout(new BorderLayout());
c.add(jbDaten,BorderLayout.SOUTH);
c.add(jpEingabe,BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Eingabe.setLayout(new BoxLayout(jpEingabe,BoxLayout.Y_AXIS));
jpEingabe.setLayout(new GridLayout(3,1));
jpEingabe.add(new JLabel("Artikel Nummer",SwingConstants.CENTER));
jpEingabe.add(jtfFamname);
jpEingabe.add(new JLabel("Bezeichnung",SwingConstants.CENTER));
jpEingabe.add(jtfVorname);
jpEingabe.add(new JLabel("Preis",SwingConstants.CENTER));
jpEingabe.add(jtfGebDatum);


jbDaten.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{

}
});


}

// main-Methode
public static void main(String[] args)
{
JDBCSwing1 myFrame = new JDBCSwing1();
myFrame.setSize(500,300);
myFrame.setVisible(true);
}

}

HajottV
2004-03-29, 19:36:02
Du brauchst einen der MYSQL Connectoren, z.B. mysql-connector-java-2.0.14-bin.jar

import java.sql.*;



//-- REGISTER DRIVER ---------------------------------------------------------

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

//-- GENERATE STATEMENT ------------------------------------------------------

Connection sqlConnection = DriverManager.getConnection("jdbc:mysql://<rechnername>/<datenbankname>"),
"<user>",
"<passwort>");

Statement sqlStatement = sqlConnection.createStatement();

//-- ACCESS DATA-BASE --------------------------------------------------------

ResultSet sqlResultSet = sqlStatement.executeQuery("select * from <meine tabelle>");

//-- SHOW HEADER -------------------------------------------------------------

ResultSetMetaData sqlMetaData = sqlResultSet.getMetaData();

for (int i = 1; i <= sqlMetaData.getColumnCount(); i++)
System.out.print(sqlMetaData.getColumnName(i) + "|");

System.out.println();

//-- SHOW CONTENT ------------------------------------------------------------

while (sqlResultSet.next()) {

for (int i = 1; i <= sqlMetaData.getColumnCount(); i++)
System.out.print(sqlResultSet.getString(i) + "|");

System.out.println();

} // while (sqlResultSet.next()) { ... }

//-- RELEASE STUFF -----------------------------------------------------------

sqlResultSet .close();
sqlConnection.close(); // oder release() ??? weiß ich nicht auswändig

War noch ein kleiner Bug [")" fehlte] drin... kann's leider jetzt nicht austesten.

HellHorse
2004-03-29, 20:44:23
<---- inoffizieller DataSource-Promoter des Forums
Es ist besser die Connection für ein DataSource Objekt herzustellen als über den DriverManager.
http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/DataSource.html

A factory for connections to the physical data source that this DataSource object represents. An alternative to the DriverManager facility, a DataSource object is the preferred means of getting a connection. An object that implements the DataSource interface will typically be registered with a naming service based on the JavaTM Naming and Directory (JNDI) API.


DataSource dataSource = getMySQLDataSource(<hostname>, <portnumber>, <dbname>, <username>, <passworrd>);
Connection sqlConnection = dataSource.getConnection();

//-- HajottV code hier --------------


Wie getMySQLDataSource etwa aussehen könnte.

public static DataSource getMySQLDataSource(String host, int port, String db,String user, String password) {
MysqlDataSource source = new MysqlDataSource();
source.setServerName(host);
source.setPortNumber(port);
source.setDatabaseName(db);
source.setUser(user);
source.setPassword(password);
return source;
}

aVenger
2004-03-29, 21:01:08
den Java Connector hab ich schon und auch schon eingefügt.
Aber ehrlich gesagt habe ich null plan was du geschriben hast

HellHorse
2004-03-30, 18:42:22
Hier ist ein Tutorial:
http://java.sun.com/docs/books/tutorial/jdbc/index.html

HajottV
2004-03-31, 14:33:55
Original geschrieben von [t_as]Avenger
Aber ehrlich gesagt habe ich null plan was du geschriben hast

Bezog sich das auf das, was HellHorse geschrieben hat?
Wenn nein, dann beschreib mal Dein Problem.

DataSource ist eine feine Sache (ich hatte mich schon immer gewundert, warum JNDI und JDBC nicht zusammengeführt wurde). ABER bis JAVA 1.5 überall installiert ist, wird noch eine Menge Wasser den Rhein runterfließen. Unsere Kunden benutzen z.T. noch JAVA 1.3... 'bleeding edge'-Technologie hat auch immer eine Schattenseite.

Gruß

Jörg

Aqualon
2004-03-31, 15:20:52
DataSource gibt es schon ab Version 1.4 und die Basisfunktion des reinen Verbindungsaufbaus funktioniert einwandfrei.

Zu connection pooling und distributed transactions kann ich nichts sagen, da ich damit noch nichts zu tun hatte.

Aqua