Hallo liebe Javaianer,
ich habe ein Applet geschrieben, welches Daten in eine Tabelle einer Datenbank (mySQL) gespeichert werden.
Mein Code sieht wie folgt aus:
Jedesmal wenn ich eine Operation wegen der Datenbank ausführen will, erstelle ich eine neue
Verbindung und schliesse die Verbindung am Ende der Methode.
Ich benutze hier eine Tabelle mit 2 Spalten.
Die Frage lautet:
Ist es nötig, jedesmal wenn ich eine Operation mit der Datenbank ausführen muss,
die Verbindung zu öffnen und nach der jeweiligen Methode zu schliessen ????
Klasse Database
----------------
| Database |
----------------
| get_data() | -> Hole Daten aus der Tabelle
| set_data() | -> Ändere Daten in der Tabelle
| get_row() | -> Ermittle die Anzahl der Zeilen der Tabelle
---------------
ich habe ein Applet geschrieben, welches Daten in eine Tabelle einer Datenbank (mySQL) gespeichert werden.
Mein Code sieht wie folgt aus:
Jedesmal wenn ich eine Operation wegen der Datenbank ausführen will, erstelle ich eine neue
Verbindung und schliesse die Verbindung am Ende der Methode.
Ich benutze hier eine Tabelle mit 2 Spalten.
Die Frage lautet:
Ist es nötig, jedesmal wenn ich eine Operation mit der Datenbank ausführen muss,
die Verbindung zu öffnen und nach der jeweiligen Methode zu schliessen ????
Klasse Database
----------------
| Database |
----------------
| get_data() | -> Hole Daten aus der Tabelle
| set_data() | -> Ändere Daten in der Tabelle
| get_row() | -> Ermittle die Anzahl der Zeilen der Tabelle
---------------
Code:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
public class JShop extends Applet implements ActionListener{
public Button send_data = new Button("send Data");
public Button get_data = new Button("get Data");
public TextField tf = new TextField("Data");
public int columns;
public int row = -1;
// DAS IST MEINE DATENBANK UND DER ZUGRIFF AUF DIE DATENBANK
//#########################################################
//#########################################################
public class Database{
//Abfrage
public String select = new String("SELECT * FROM Artikel");
//Änderung
public String update = new String("UPDATE Artikel SET Artikel_NR = '00110'");
//Hinzufügen
public String insert = new String("insert into Artikel values('00111','japanischer Reiswein')");
//Abfrage wird vorbereitet
public PreparedStatement p = null;
//Ergebnis-PIPE-STREAM
public ResultSet res = null;
//Verbindung
public Connection cn = null;
//Abfrage (Statement) auführen
public Statement state = null;
//Counter für die Anzahl der Zeilen
public int cnt = 0;
//Anzahl der Spalten
public int columns;
//String für eine Tabelle mit 2 Spalten
public String bestellung [][];
//Konstruktor, sobald ein Objekt der Datenbank erstellt wird,
//wird sofort eine Verbindung hergestellt.
Database(){
try {
try {
try {
//Treiber laden
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//Verbindung zum Server aufnehmen
cn = DriverManager.getConnection("jdbc:mysql://localhost/onlineshop?user=root&password=playstation");
//Erstellen einen Statement
state = cn.createStatement();
//Übergebe mittels state die Anfrage an die Datenbank
res = state.executeQuery(select);
//Ermittle die Anzahl an Spalten
columns = res.getMetaData().getColumnCount();
//Ergebnis von einer 2 Spalten Tabelle
bestellung = new String [1000][columns+1];
while(res.next()) {
for (int i = 1; i <= columns; i++) {
bestellung[cnt][i]=res.getString(i);
}
cnt++;
}
//Anzahl der Zeilen
row = cnt;
res.close();
state.close();
cn.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Could not connect to database!");
}
}//end of constructor
//-------------------------------
//-------------------------------
// Daten in die Datenbank einfügen
//-------------------------------
public void set_data(String insert){
//Auf der Homepage wird z.B. Name eingegeben als String
//Hier wird der String in ein Select Statement einpacken.
String sql_tag_insert = new String("insert into Artikel values('");
sql_tag_insert = sql_tag_insert + insert;
sql_tag_insert = sql_tag_insert + "','leer')";
System.out.println(sql_tag_insert);
try {
cn = DriverManager.getConnection("jdbc:mysql://localhost/onlineshop?user=root&password=playstation");
p = cn.prepareStatement(sql_tag_insert);
p.executeUpdate(sql_tag_insert);
cn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}//end of insert
//-------------------------------
//-------------------------------
// Hole Daten aus der Datenbank
//-------------------------------
public void get_data(){
String sql_tag = new String("select * from Artikel");
try {
cn = DriverManager.getConnection("jdbc:mysql://localhost/onlineshop?user=root&password=playstation");
state = cn.createStatement();
res = state.executeQuery(select);
columns = res.getMetaData().getColumnCount();
bestellung = new String [1000][columns+1];
while(res.next()) {
for (int i = 1; i <= columns; i++) {
// System.out.println(res.getString(i) + " " + i);
bestellung[cnt][i]=res.getString(i);
}
cnt++;
}
row = cnt;
// System.out.println("Anzahl an Reihen " + row + " columns " + columns + " " + bestellung[0][1] + " " + bestellung[0][2]);
res.close();
state.close();
cn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//---------------------------
//---------------------------
// Ermittle die Anzahl der Zeilen der Tabelle
//---------------------------
public int get_row(){
int raw=-1;
int c=-1;
try {
cn = DriverManager.getConnection("jdbc:mysql://localhost/onlineshop?user=root&password=playstation");
state = cn.createStatement();
res = state.executeQuery(select);
columns = res.getMetaData().getColumnCount();
while(res.next()) {
for (int i = 1; i <= columns; i++) {
//do what you do, nothing;
}
c++;
}
raw = c;
res.close();
state.close();
cn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return raw;
}
}//end of class Database()
//#########################################################
//#########################################################
public Database dbArtikel = null;
//---------------------------
//---------------------------
// APPLET init
//---------------------------
public void init(){
dbArtikel = new Database();
System.out.println("hallo init");
send_data = new Button("send Data");
get_data = new Button("get Data");
tf = new TextField("Artikel_nr");
setLayout(new BorderLayout());
add(send_data,"North");
add(get_data,"South");
add(tf,"Center");
send_data.addActionListener(this);
get_data.addActionListener(this);
}
public void start(){
.....
.....
}
public void paint(){
repaint();
}
//-------------------------------------------------------
//-------------------------------------------------------
// actionPerformed
//-------------------------------------------------------
public void actionPerformed(ActionEvent action) {
String artikel_nr = new String();
// Nimm die Eingabe aus einem Textfeld und übergebe dies der Datenbank
if(action.getSource() == send_data){
artikel_nr = tf.getText();
dbArtikel.set_data(artikel_nr);
tf.setText("sending data ...");
}
// Hole Daten aus der Datenbank und zeige es an.
if(action.getSource() == get_data){
dbArtikel.get_data();
System.out.println("db.get_row() " + dbArtikel.get_row() + " columns " + columns);
for(int i=0;i<dbArtikel.get_row()+1;i++){
for(int k=1;k<columns;k++){
System.out.println(dbArtikel.bestellung[i][k] + dbArtikel.bestellung[i][k]);
}
}
}
//-------------------------------------------
}
}