App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wie führe ich dieses JDBC Programm aus?
- Ersteller Laserstrahl
- Erstellt am
Laserstrahl
Admiral Special
- Mitglied seit
- 06.10.2003
- Beiträge
- 1.610
- Renomée
- 11
Sry für die Frage, ich bin noch ein Amateur beim Programmieren...den eclipse editor verwende ich auch seit kurzem.
ich hab da ein interessantes JDBC Programm mit GUI gefunden, das datensätze löschen, anlegen, aktualisieren usw. kann:
http://vsite.de/kursverwaltung.html
KurseTabelle.java und InitialisiereTabellen.java sind die sourcecodes. Sogar eine Erklärung liegt als pdf vor.
Leider bekomm ich beim Kompilieren unter Eclipse folgende Fehlermeldung:
Ich habe die beiden *.java dateien als src/packages in eclipse importiert.
Die Oracle Treiberbibliothek (jar) in eclipse eingebunden.
Diesen Treiber hab ich aber von der Oracle Page runtergeladen.
Ich wußte nicht was ich mit dem thin Treiber vom oberen Link anstellen musste
Ich bitte um Eure Hilfe.
ich hab da ein interessantes JDBC Programm mit GUI gefunden, das datensätze löschen, anlegen, aktualisieren usw. kann:
http://vsite.de/kursverwaltung.html
KurseTabelle.java und InitialisiereTabellen.java sind die sourcecodes. Sogar eine Erklärung liegt als pdf vor.
Leider bekomm ich beim Kompilieren unter Eclipse folgende Fehlermeldung:
Code:
java.sql.SQLException: E/A-Exception: The Network Adapter could not establish the connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:420)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at init.InitialisiereTabellen.<init>(InitialisiereTabellen.java:13)
at init.InitialisiereTabellen.main(InitialisiereTabellen.java:8)
Ich habe die beiden *.java dateien als src/packages in eclipse importiert.
Die Oracle Treiberbibliothek (jar) in eclipse eingebunden.
Diesen Treiber hab ich aber von der Oracle Page runtergeladen.
Ich wußte nicht was ich mit dem thin Treiber vom oberen Link anstellen musste
Ich bitte um Eure Hilfe.
Laserstrahl
Admiral Special
- Mitglied seit
- 06.10.2003
- Beiträge
- 1.610
- Renomée
- 11
Ich hab auch festgestellt dass ich dieses riesige Oracle DB Programm benötige.
Folgendes hab ich ausprobiert, mit HSQLDB als eigenständige Applikation zum Laufen zu kriegen:
http://javamagazin.de/itr/online_artikel/psecom,id,312,nodeid,11.html
Klappt aber einfach nicht
Vielleicht hab ich das Konzept des HSQLDB nicht richtig verstanden? Ich dachte mit dem HSQLDB läßt sich das ganze auch ohne Server betreiben oder liege ich da falsch?
Eigentlich will ich das Programm nur zum Laufen bringen sonst nichts, nicht einmal das schaff ich das....
Folgendes hab ich ausprobiert, mit HSQLDB als eigenständige Applikation zum Laufen zu kriegen:
http://javamagazin.de/itr/online_artikel/psecom,id,312,nodeid,11.html
Klappt aber einfach nicht
Code:
package init;
import java.sql.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.logging.*;
import java.io.*;
import hlp.Helper;
public class InitialisiereTabellen {
static Logger log = Logger.getLogger("de.myname.UseHSQLDB");
//private static Log log = LogFactory.getLog("init.InitialisiereTabellen");
public static void main(String[] args) throws Exception {
Helper.configureLog4j();
log.info("Starting Application");
new InitialisiereTabellen();
}
public InitialisiereTabellen() {
try {
/*Class.forName("oracle.jdbc.driver.OracleDriver");
Connection c = DriverManager.getConnection(
"jdbc:oracle:thin:@orcl.vsite.de:1521:Kurse",
"system", "manager");*/
log.log(Level.INFO, "Starting to load JDBCDriver... ");
Class.forName("org.hsqldb.jdbcDriver");
Connection c = DriverManager.getConnection(
"jdbc:hsqldb:data/pruefungen",
"sa", "");
log.log(Level.INFO, "Starting to load JDBCDriver... ");
Connection con =
DriverManager.getConnection( // tmp must exist. Right slash.
"jdbc:hsqldb:D:/data/pruefungen","sa","");
log.log(Level.INFO, "Connection established!");
Statement s = c.createStatement();
//=== Dozenten =====================
System.out.println("Tabelle Dozenten ...");
String sql = "DROP TABLE Dozenten";
try { s.execute(sql); } catch (Exception ex) {}
sql = "CREATE TABLE Dozenten " +
"(dcode NUMBER(11), " +
"vorname VARCHAR2(25), " +
"nachname VARCHAR2(25))" ;
try { s.execute(sql); } catch (Exception ex) {}
String a[][] = new String[][] {{"2", "Leutner", "Brigitte"},
{"3", "Gernhardt", "Wolfgang"},
{"4", "Weizenbaum", "Josephine"},
{"5", "Duffing", "Julienne"},
{"9", "Mergel", "Börries"},
{"10", "Ludwig", "Luigi"},
{"27", "Mayer-Böricke", "Julius"}};
PreparedStatement ps = c.prepareStatement(
"INSERT INTO Dozenten (dcode,nachname,vorname) " +
"VALUES (?,?,?)");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++)
ps.setString(j + 1, a[i][j]);
ps.execute();
}
//=== Personen =====================
System.out.println("Tabelle Personen ...");
sql = "DROP TABLE Personen";
try { s.execute(sql); } catch (Exception ex) {}
sql = "CREATE TABLE Personen " +
"(pcode NUMBER(11), " +
"vorname VARCHAR2(25), " +
"nachname VARCHAR2(25))" ;
try { s.execute(sql); } catch (Exception ex) {}
a = new String[][] {{"23", "Müller", "Hanne"},
{"24", "Schmidt", "Lothar"},
{"34", "Hintze", "Franz"},
{"88", "Khan", "Dschingis"},
{"91", "Kaiser", "Leo"},
{"101", "Kunze", "Sieglinde"}};
ps = c.prepareStatement(
"INSERT INTO Personen (pcode,nachname,vorname) " +
"VALUES (?,?,?)");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++)
ps.setString(j + 1, a[i][j]);
ps.execute();
}
//=== Kurse =====================
System.out.println("Tabelle Kurse ...");
sql = "DROP TABLE Kurse";
try { s.execute(sql); } catch (Exception ex) {}
sql = "CREATE TABLE Kurse " +
"(kcode NUMBER(11), " +
" dcode NUMBER(11), " +
"typ VARCHAR2(1), " +
"bezeichnung VARCHAR2(100), " +
"zeit NUMBER(15,1), " +
"datum DATE)" ;
try { s.execute(sql); } catch (Exception ex) {}
Object o[][] = new Object[][] {{"1", "P", "10", "Objektorientierte Programmierung mit Java", new Date(98,4,27), "10"},
{"2", "S", "3", "JavaScript", new Date(98,6,29), "5"},
{"3", "P", "2", "JDBC", new Date(98,6,30), "7,5"},
{"4", "S", "3", "HTML", new Date(98,7,13), "5"},
{"5", "S", "5", "GUI-Programmierung mit Java", new Date(98,6,9), "7,5"},
{"6", "V", "6", "Servlets", new Date(98,6,10), "7,5"}};
ps = c.prepareStatement(
"INSERT INTO Kurse (kcode,typ,dcode,bezeichnung,datum,zeit) " +
"VALUES (?,?,?,?,?,?)");
for (int i = 0; i < o.length; i++) {
for (int j = 0; j < o[i].length; j++) {
ps.setObject(j + 1, o[i][j]);
}
ps.execute();
}
//=== Teilnehmer =====================
System.out.println("Tabelle Teilnehmer ...");
sql = "DROP TABLE Teilnehmer";
try { s.execute(sql); } catch (Exception ex) {}
sql = "CREATE TABLE Teilnehmer " +
"(pcode NUMBER(11), " +
" kcode NUMBER(11) )";
try { s.execute(sql); } catch (Exception ex) {}
a = new String[][] {{"23", "10"},
{"34", "10"},
{"24", "10"},
{"91", "3"},
{"24", "2"},
{"101", "2"},
{"101", "3"},
{"91", "2"}};
ps = c.prepareStatement(
"INSERT INTO Teilnehmer (pcode,kcode) " +
"VALUES (?,?)");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++)
ps.setString(j + 1, a[i][j]);
ps.execute();
}
}
catch (Exception ex) {ex.printStackTrace();}
}
} // Ende class InitialisiereTabellen
Code:
package tab;
import init.InitialisiereTabellen;
import java.awt.*; import javax.swing.*;
import java.awt.event.*; import javax.swing.table.*;
import java.sql.*; import javax.swing.event.*;
// UI Delegate (View und Controller)
class KurseTabelle extends JFrame {
KurseTabelleModel m = new KurseTabelleModel();
JTable table = new JTable(m);
public KurseTabelle() {
super("MVC Tabelle (GUI Kurse)");
Panel oben = new Panel(new GridLayout(1, 5));
Button reset = new Button("Reset");
Button neuZeile = new Button("neu");
Button delZeile = new Button("löschen");
Button speicher = new Button("speichern");
Button refresh = new Button("refresh");
getContentPane().setLayout(new BorderLayout());
getContentPane().add("North", oben);
oben.add(reset);
oben.add(neuZeile);
oben.add(delZeile);
oben.add(speicher);
oben.add(refresh);
getContentPane().add("Center", new JScrollPane(table));
table.setColumnSelectionAllowed(false);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for (int i = 0; i < m.cols; i++)
table.getColumn(m.colnames[i]).setPreferredWidth(m.colwidths[i]);
m.con.init();
refresh();
combobox(m.dozenten, m.colnames[1]);
combobox(m.typen, m.colnames[2]);
neuZeile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
neueZeile(); }});
reset.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new InitialisiereTabellen();
refresh(); }});
delZeile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
löscheZeile(table.getSelectedRow()); }});
refresh.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
refresh(); }});
speicher.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
speichereZeile(table.getSelectedRow()) ; }});
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0); }});
setSize(500, 400);
setVisible(true);
}
private void combobox(Object[] items, String spalte) {
JComboBox box = new JComboBox();
for (int i = 0; i < items.length; i++)
box.addItem(items[i]);
table.getColumn(spalte).setCellEditor(
new DefaultCellEditor(box));
}
void neueZeile(Object[] o) {
m.addRow(o);
table.setRowSelectionInterval(m.getRowCount()-1, m.getRowCount()-1);
}
void neueZeile() {
Object[] temp = new Object[m.cols];
for (int i = 0; i < m.cols; i++)
temp[i] = "";
neueZeile(temp);
}
void löscheZeile(int row) {
if (row < 0 || row >= m.getRowCount())
return;
if (JOptionPane.showOptionDialog(this, "Wirklich kcode=" +
m.getValueAt(row, 0) + " löschen?",
"KurseTabelle", JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE, null,
new Object[]{"Ja", "Nein"}, "Nein") != 0) return;
m.con.delete(m.getValueAt(row, 0));
m.removeRow(row);
table.setRowSelectionInterval(m.getRowCount()-1, m.getRowCount()-1);
}
void speichereZeile(int row) {
if ("".equals(m.getValueAt(row, 0)))
m.con.insert(m, row);
else
m.con.update(m, row);
refresh();
}
void refresh() {
Object[] temp = new Object[m.cols];
m.con.select();
m.setNumRows(0);
while ((temp = m.con.nächste()) != null)
neueZeile(temp);
combobox(m.dozenten, m.colnames[1]);
}
public static void main(String[] args) {
new KurseTabelle();
}
}
// Programm 8-3b (gleiche Datei wie Teil a)
// Model
class KurseTabelleModel extends DefaultTableModel {
KurseTabelleModelConnector con;
String[] colnames = new String[] {"kcode","dcode","Typ",
"Kursbezeichnung","Zeit","Nachname","Vorname"};
String[] columns = new String[] {"kcode","Kurse.dcode","typ",
"bezeichnung","zeit","nachname","vorname"};
boolean[] editable = {false, true, true, true, true, false, false};
int[] colwidths = {50, 50, 50, 200, 50, 70, 70};
static final int cols = 7;
Object[] dozenten;
Object[] typen = new Object[] {"P", "S", "Ü", "V"};
public KurseTabelleModel() {
super(0, cols);
con = new KurseTabelleModelConnector(this);
setColumnIdentifiers(colnames);
}
public boolean isCellEditable(int row, int col) {
if (!editable[col]) return false;
else return super.isCellEditable(row, col);
}
} // Ende Class KurseTabelleModel
// Datenbank-Connector
class KurseTabelleModelConnector {
static String treiber = "org.hsqldb.jdbcDriver";
static String jdbcurl = "jdbc:hsqldb:data/pruefungen";
static String uid = "system", pwd = "manager";
static Connection c;
String sqlsel; Statement sel;
String sqlupd; PreparedStatement upd;
String sqldel; PreparedStatement del;
String sqlins; CallableStatement ins;
String sqldoz; Statement doz;
ResultSet rsel, rdoz;
KurseTabelleModel m;
static { // statischer Initialisierer
try {
Class.forName(treiber);
c = DriverManager.getConnection(jdbcurl, uid, pwd);
}
catch (Exception ex) { ex.printStackTrace(); System.exit(0); }
}
public KurseTabelleModelConnector(KurseTabelleModel m) { this.m = m; }
void select() {
System.out.println("SQL " + sqlsel);
try {
rsel = sel.executeQuery(sqlsel);
rdoz = doz.executeQuery(sqldoz);
m.dozenten = null;
while (rdoz.next()) {
int x = m.dozenten == null ? 0 : m.dozenten.length;
Object[] temp = new Object[x + 1];
for (int i = 0; i < x; i++) {
temp[i] = m.dozenten[i]; }
temp[x] = rdoz.getString(1);
m.dozenten = temp;
}
}
catch (Exception ex) { ex.printStackTrace();}
}
Object[] nächste() {
Object[] temp = new Object[m.cols];
try {
if (!rsel.next()) return null;
for (int i = 0; i < m.cols; i++)
temp[i] = rsel.getString(i + 1);
return temp;
}
catch (Exception ex) { ex.printStackTrace();}
return null;
}
void update(KurseTabelleModel m, int row) {
try {
System.out.println("SQL " + sqlupd);
upd.setString(5, (String) m.getValueAt(row, 0));
upd.setString(1, (String) m.getValueAt(row, 1));
upd.setString(2, (String) m.getValueAt(row, 2));
upd.setString(3, (String) m.getValueAt(row, 3));
upd.setString(4,((String) m.getValueAt(row, 4)).replace('.', ','));
upd.execute();
}
catch (Exception ex) { System.out.println("UPDATE"); ex.printStackTrace();}
}
void insert(KurseTabelleModel m, int row) {
try {
System.out.println("SQL " + sqlins);
ins.registerOutParameter(1, Types.INTEGER);
ins.setString(2, (String) m.getValueAt(row, 1));
ins.setString(3, (String) m.getValueAt(row, 2));
ins.setString(4, (String) m.getValueAt(row, 3));
ins.setString(5, (String) m.getValueAt(row, 4));
ins.execute();
}
catch (Exception ex) { ex.printStackTrace();}
}
void delete(Object kcode) {
try {
System.out.println("SQL " + sqldel);
del.setInt(1, Integer.parseInt((String)kcode));
del.execute();
}
catch (Exception ex) { ex.printStackTrace();}
}
void init() {
try {
// SELECT
sel = c.createStatement();
sqlsel = "SELECT ";
for (int i = 0; i < m.cols; i++)
sqlsel += (i == 0 ? "" : ",") + m.columns[i];
sqlsel += " FROM Kurse, Dozenten " +
" WHERE Kurse.dcode = Dozenten.dcode (+)" +
" ORDER BY kcode";
doz = c.createStatement();
sqldoz = "SELECT dcode,nachname,vorname FROM Dozenten";
// UPDATE
sqlupd = "UPDATE Kurse " +
"SET dcode=?, typ=?, bezeichnung=?, zeit=? " +
"WHERE kcode=?";
upd = c.prepareStatement(sqlupd);
// INSERT
String proz =
"CREATE OR REPLACE FUNCTION InsertKurse \n" +
"(dc IN INTEGER, typ IN STRING, " +
" tit IN STRING, zeit IN INTEGER) \n" +
" RETURN INTEGER IS \n t NUMBER; \n" +
" BEGIN\n SELECT max(kcode) INTO t FROM Kurse;\n" +
" IF t IS NULL THEN t := 0; END IF;" +
" INSERT INTO Kurse(kcode, dcode, typ," +
" bezeichnung, zeit)\n" +
" VALUES(t+1,dc,typ,tit,zeit); \n" +
" RETURN t+1; \n END;";
c.createStatement().execute(proz);
sqlins = "{? = call InsertKurse(?, ?, ?, ?)}";
ins = c.prepareCall(sqlins);
// DELETE
sqldel = "DELETE FROM Kurse WHERE kcode=?";
del = c.prepareStatement(sqldel);
}
catch (Exception ex) {
ex.printStackTrace(); System.exit(0);
}
}
} // Ende Class KurseTabelleModelConnector
Vielleicht hab ich das Konzept des HSQLDB nicht richtig verstanden? Ich dachte mit dem HSQLDB läßt sich das ganze auch ohne Server betreiben oder liege ich da falsch?
Eigentlich will ich das Programm nur zum Laufen bringen sonst nichts, nicht einmal das schaff ich das....
Zuletzt bearbeitet:
Edit: hab die Kommentare übersehen.
Du hast trotzdem 2 Connections - con und c - brauchst du nicht.
mach mal ein einfaches Beispiel mit einem Query und schau dir dazu mal die Fehlermeldungen an
Du hast trotzdem 2 Connections - con und c - brauchst du nicht.
mach mal ein einfaches Beispiel mit einem Query und schau dir dazu mal die Fehlermeldungen an
Zuletzt bearbeitet:
Ähnliche Themen
- Antworten
- 16
- Aufrufe
- 7K
- Antworten
- 0
- Aufrufe
- 142K