ich tüftle schon die ganze zeit daran rum ... habe es aber noch nicht geschafft das ich einen Datensatz in meine Tabelle schreibe.
die Tabelle in die ich schreiben will heißt mitarbeiter, aber wenn ich mein kleines Testprogramm ausführe schreibt er keine DS in die DB.
Achja, wenn ich das Kommando welches in SQLMitarbeiter erzeugt wird per konsole eingebe gehts..... aber mit java nicht
:cry:
die Tabelle in die ich schreiben will heißt mitarbeiter, aber wenn ich mein kleines Testprogramm ausführe schreibt er keine DS in die DB.
Achja, wenn ich das Kommando welches in SQLMitarbeiter erzeugt wird per konsole eingebe gehts..... aber mit java nicht
Code:
/*
* test.java
*
* Created on 07. März 2006, 15:57
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package zeiterfassungssystem;
/**
*
* @author Albert
*/
public class test {
/** Creates a new instance of test */
public test() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
SqlMitarbeiter sm = new SqlMitarbeiter();
Mitarbeiter m = new Mitarbeiter(195,"Franz","Horvath","Hauptstraße 18",7551,"Stegersbach","03326/522");
try{
ErrorLog.reportToLog("alles falsch!");
sm.insertMitarbeiter(m);
}
catch(MitarbeiterException e){
System.out.println(e.getMessage());
}
}
}
Code:
/*
* SqlMitarbeiter.java
*
* Created on 25. Februar 2006, 14:55
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package zeiterfassungssystem;
import java.util.*;
import java.sql.*;
import java.lang.*;
import javax.swing.*;
/**
*
* @author Albert
*/
public class SqlMitarbeiter extends SqlQuery {
private Connection con;
private static SqlMitarbeiter instance;
/**
* Creates a new instance of SqlMitarbeiter
*/
public SqlMitarbeiter() {
}
/**
*Diese Funktion wandelt das ResultSet in ein Obejkt um, das für die jeweilige
*Tabelle designt werden muss
*/
protected Object makeObject(ResultSet rs) throws SQLException{
Mitarbeiter m = new Mitarbeiter();
m.setMA_ID(rs.getInt(1));
m.setVorname(rs.getString(2));
m.setNachname(rs.getString(3));
m.setAdresse(rs.getString(4));
m.setPLZ(rs.getInt(5));
m.setOrt(rs.getString(6));
m.setTel_NR(rs.getString(7));
return m;
}
/**
*Diese Funktion, liest die komplette tabelle aus, und erzeugt mitarbeiter Objekte
*die im Vektor gespeichert werden.
*/
public Vector getList() throws MitarbeiterException{
try{
String sql = "select MA_ID, Vorname, Nachname,Adresse,PLZ,Ort,Tel_Nr"+
"from mitarbeiter order by Nachname,Vorname";
Vector result = query(sql);
return result;
}
catch(Exception e){
throw( new MitarbeiterException(e.getMessage()));
}
}
/**
*Einfügen eines neuen Datensatzes in die Datenbank, der rückgabewert zeigt
*auf die MA_ID die gerade hinzugefügt wurde.
*/
public int insertMitarbeiter(Mitarbeiter m)throws MitarbeiterException{
int count=0;
try{
ErrorLog.reportToLog(m.toString());
String sql = "insert into mitarbeiter (MA_ID,Vorname,Nachname,Adresse,PLZ,Ort,Tel_Nr) "+
"values ("+m.getMA_ID()+",'"+m.getVorname()+"','"+m.getNachname()+
"','"+m.getAdresse()+ "',"+m.getPLZ()+",'"+m.getOrt()+"','"+m.getTel_Nr()+"')";
count = update(sql); // Count enthält die MA_ID
}catch(Exception e){
throw( new MitarbeiterException(e.getMessage()));
}
return count;
}
/**
*Mit dieser Funktion kann man einzelne Daten in einem Datensatz ändern
*/
public int updateMitarbeiter(Mitarbeiter m)throws MitarbeiterException{
try{
String sql = "update mitarbeiter set" +
"MA_ID = "+ m.getMA_ID() + ", "+
"Vorname = '"+ m.getVorname() +"', "+
"Nachname = '"+m.getNachname()+"', "+
"Adresse = '"+m.getAdresse()+"', "+
"PLZ = "+m.getPLZ()+", "+
"Ort = '"+m.getOrt()+"', "+
"Tel_Nr = '"+m.getTel_Nr()+"' "+
"where id = " + m.getMA_ID();
int count = update(sql);
return count;
}
catch(Exception e){
throw(new MitarbeiterException(e.getMessage()));
}
}
/*
*Funktion zum Löschen eines Datensatzes aus der Tabelle Mitarbeiter.
*/
public void delete(int nr)throws MitarbeiterException{
try{
String sql = "delete from mitarbeiter where nr = "+ nr;
int count = update(sql);
}
catch(Exception e){
throw(new MitarbeiterException(e.getMessage()));
}
}
}
Code:
/*
* SqlQuery.java
*
* Created on 26. Februar 2006, 13:52
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package zeiterfassungssystem;
import java.sql.*;
import java.lang.*;
import java.net.*;
import java.util.*;
import java.io.*;
/**
*
* @author Albert
*/
public abstract class SqlQuery {
protected abstract Object makeObject(ResultSet rs)throws SQLException;
/** Creates a new instance of SqlQuery */
public SqlQuery() {
}
public int update(String sql)throws IOException,SQLException,ClassNotFoundException
{
int count=1;
Statement s = null;
Connection con = null;
ErrorLog.reportToLog(sql);
con = ConnectionManager.getConnection();
s = con.createStatement();
ErrorLog.reportToLog(s.toString());
count =s.executeUpdate(sql);
return count;
}
/*
*Diese funktion list alle datensätze nach einander aus und erzeugt für jede Zeile ein
*Objekt und speichert dieses in einem Vector
*/
protected Vector query(String sql) throws IOException,ClassNotFoundException,
SQLException{
Statement s = null;
Connection con = null;
Vector result = new Vector();
ResultSet rs = null;
try {
con = ConnectionManager.getConnection();
s = con.createStatement();
rs = s.executeQuery(sql);
while(rs.next()){
result.add(makeObject(rs));
}
return result;
}
finally{
if(s!=null) s.close();
}
}
}
Code:
/*
* ConnectionManager.java
*
* Created on 25. Februar 2006, 12:16
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package zeiterfassungssystem;
import java.sql.*;
import java.net.*;
import java.util.*;
import java.io.*;
import java.lang.*;
/**
*
* @author Albert
*/
public class ConnectionManager {
// Klassenvariablen zum speichern der DB Parameter sowie der Verbindung
private static final String FILE = "dbparam.txt"; // Mit Parameter gefülltes Textfile
private static String driver;
private static String url;
private static String user;
private static String password;
private static Connection con; // Enthält die Verbindung wenn Verbindung erfolgreich
/**
* Creates a new instance of ConnectionManager
*/
public ConnectionManager() {
}
/**
*Baut die Verbindung zu einer MySQL Datenbank auf, wenn nötig und schließt diese
*Verbindung dann wieder, und gibt ein Connection Refernez zurück.
*/
public static Connection getConnection() throws IOException, ClassNotFoundException,
SQLException{
if(con == null)
{
init();
con = DriverManager.getConnection(url,user,password);
}
return con;
}
/**
*Liest die Parameter aus der Datei FILE und erzeugt Objekt
*das die Verbindugnsdaten für eine MySQL Verbindung enthält.
*/
public static void init() throws IOException, ClassNotFoundException
{
try {
//DB-Verbindungsparameter lesen
URL file = ConnectionManager.class.getResource(FILE);
if(file == null)
throw new IOException(FILE + "wurde nicht gefunden!");
InputStream in = file.openStream();
Properties p = new Properties();
p.load(in);
in.close();
//Erzeugen der instanzvariablen für ein Objekt
driver = p.getProperty(driver);
driver = p.getProperty(url);
driver = p.getProperty(user);
driver = p.getProperty(password);
// JDBC Treiber Laden
// Objekt erzeugen
Class.forName(driver);
}
catch(ClassNotFoundException e){
}
}
public static void closeConnection(){
try{
if(con != null){
con.close();
con = null;
}
}
catch(SQLException e){}
}
}