Eigene Libary

Status
Nicht offen für weitere Antworten.

tom g.

Aktives Mitglied
Hallo Forum,

ich habe mir 2 Klassen erstellt, die den Umgang mit einem MySQL-Server erleichtern sollen.

Dann habe ich das Ganze als Jar gepackt, Docu erstellt und in meinem Projekt als Libary importiert.

Code:
public class TestMAin {
    
    /** Creates a new instance of TestMAin */
    public TestMAin() {
        MySQLDBConfig msc = new MySQLDBConfig();
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    }
    
}

geht nicht, bekomme ich immer ein

Z:\JHelpMe\src\jhelpme\TestMAin.java:20: cannot find symbol
symbol : class MySQLDBConfig
location: class jhelpme.TestMAin
MySQLDBConfig msc = new MySQLDBConfig();

Ich habe angenommen, wenn ich das Jar mit in die Libarys packe, brauche ich es nicht mehr zu importieren.

Die Klassen:

Code:
/*
 * MySQLDBConfig.java
 *
 * Created on 16. April 2007, 08:49
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package org.togo.mysqldb;

/**
 * Klasse zum einstellen der Zugangsdaten des MySQL-Server.
 * @author cttogo
 */
public class MySQLDBConfig {
    private String sDBHost = "";
    private String sDBPort = "3306";
    private String sUserName = "";
    private String sPassWord = "";
    private String sDBName = "";
    /**
     * Erstellt eine neue Instanz von MySQLDBConfig
     */
    public MySQLDBConfig() {
    }
    
    
    /**
     * Setzt den DatenBank Host
     * @param String Die IP-Adresse des Servers
     * @return true
     * @return false - Wenn der String leer ist.
     */
    public boolean setDBHost(String dbhost){
        if(dbhost.length() > 0){
            sDBHost = dbhost;
            return true;
        } else {
            return false;
        }
    }
    
    /**
     * Gibt den DatenBank Host zurück
     * @return String - Die IP-Adresse
     */
    public String getDBHost(){
        return sDBHost;
    }
    
    /**
     * Setzt den Port für die Verbindung.
     * Standard Port 3306 ist gesetzt.
     * @param String Der Verbindungs Port
     * @return true
     * @return false - Wenn der String leer ist.
     */
    public boolean setDBPort(String dbport){
        if(dbport.length() > 0){
            sDBPort = dbport;
            return true;
        } else {
            return false;
        }
    }
    
    /**
     * Gibt den Port für die Verbindung zurück.
     * @return String - Der Verbindungsport
     */
    public String getDBPort(){
        return sDBPort;
    }
    
    /**
     * Setzt den Namen der Datenbank
     * @param String Der Name der Datenbank
     * @return true
     * @return false - Wenn der String leer ist.
     */
    public boolean setDBName(String dbname){
        if(dbname.length() > 0){
            sDBName = dbname;
            return true;
        } else {
            return false;
        }
    }
    
    /**
     * Gibt den Namen der Datenbank zurück
     * @return String - Den Namen der Datenbank
     */
    public String getDBName(){
        return sDBName;
    }
    
    /**
     * Setzt den Benutzernamen für die Datenbankverbindung
     * @param String Den Benutzernamen
     * @return true
     * @return false - Wenn der String leer ist.
     */
    public boolean setUserName(String username){
        if(username.length() > 0){
            sUserName = username;
            return true;
        } else {
            return false;
        }
    }
    
    /**
     * Gibt den Beunutzernamen zurück
     * @return String - Deen Benutzernamen
     */
    public String getUserName(){
        return sUserName;
    }
    
    /**
     * Setzt das Passwort für die Datenbankverbindung im [B]Klartext[/B]
     * @param String Das Passwort für dei Datenbankverbindung    
     * @return true
     * @return false - Wenn der String leer ist.
     */
    public boolean setPassWord(String password){
        if(password.length() > 0){
            sPassWord = password;
            return true;
        } else {
            return false;
        }
    }
    
    /**
     * Gibt das Password für die Datenbankverbindung zurück
     * @return String - Das Passwort für die Datenbankverbindung
     */
    public String getPassWord(){
        return sPassWord;
    }
}

und
Code:
/*
 * MySQLDB.java
 *
 * Created on 16. April 2007, 08:51
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package org.togo.mysqldb;

/**
 *
 * @author cttogo
 */
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


/**
 * Klasse zum erstellen einer DatenBankVerbindung zu einem MySQL Server.
 * Benötigt ein [B]MySQLDBConfig Objekt[/B]
 */
public class MySQLDB {
    private String sQuery = "";
    private String sConnectDB = "";
    private Connection conn = null;
    private Statement stmt = null;
    private ResultSet rs = null;
    private String[] result;
    private String[][] all_result;
    private String sError = "";
    
    
    /**
     * Erstellt eine neues MySQLDB Objekt
     * @param MySQLDBConfig Objekt mit den Konfigurationsdaten für die Serververbindung
     */
    public MySQLDB(MySQLDBConfig mysqldbconfig) {
        sConnectDB = "jdbc:mysql://" + mysqldbconfig.getDBHost() +"/" + mysqldbconfig.getDBName() + "?" +"user=" + mysqldbconfig.getUserName() + "&password=" + mysqldbconfig.getPassWord();
    }
    
    /**
     * Stellt die Verbindung zum Server her
     * @return boolean tue | false
     * @throws ClassNotFoundException Wenn der Datenbanktreiber nicht gefunen wird
     * @throws SQLException Wenn es Fehler beim Verbindungsaufbau gibt
     */
    public boolean connectDB(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch(ClassNotFoundException cnfe) {
            return false;
        }
        try {
            conn = DriverManager.getConnection(sConnectDB);
            return true;
        } catch (SQLException sqlx) {
            System.out.println("SQLException: " + sqlx.getMessage());
            System.out.println("SQLState: " + sqlx.getSQLState());
            System.out.println("VendorError: " + sqlx.getErrorCode());
            return false;
        }
    }
    
    /**
     * Schließt die Datenbankverbindung
     * @throws SQLException Wenn Fehler auftreten
     * @return boolean true | false
     */
    public boolean disconnectDB(){
        if (conn != null){
            try{
                conn.close();
                return true;
            } catch(SQLException sqlx) {
                System.out.print(sqlx.getMessage());
                return false;
            }
        }
        return true;
    }
    
       
    
    /**
     * Führt das SQL-Query aus.
     * Unterscheidet zwischen einfügenden und auslesenden Querys
     * @param String Das SQL-Query z.B.("SELECT * FROM FOO)
     * @throws SQLException 
     */
    public boolean query(String query){
        if(query.toUpperCase().contains("SELECT") ){
            try {
                stmt = conn.createStatement();
                rs = stmt.executeQuery(query);
                return true;
            } catch (SQLException sqlx){
                return false;
            }
        } else {
            try{
                stmt = conn.createStatement();
                stmt.executeUpdate(query);
                stmt.close();
                return true;
            } catch (SQLException sqlx){
                return false;
            }
        }
        
    }
    
    /**
     * Gibt [B]expliziet[/B] den ersten Datensatz zurück.
     * @return Array
     * @throws SQLException 
     */
    public String[] getData(){
        try{
            result = new String[rs.getMetaData().getColumnCount()];
        } catch(SQLException sqlx){
            
        }
        try{
            if(rs.first() ){
                for(int i = 0;i < rs.getMetaData().getColumnCount(); i++){
                    result[i] = rs.getString((i+1));
                }
            }
            rs.close();
            stmt.close();
        }catch(SQLException sqlx){
            System.out.println(sqlx);
        }
        return result;
    }
    
    
    /**
     * Gibt alle Datensätze zurück
     * @return mehrdimensionalen Array
     * @throws SQLException 
     */
    public String[][] getDataAll(){
        try{
            all_result = new String[getRowCount()][rs.getMetaData().getColumnCount()];
        } catch(SQLException sqlx){
            
        }
        int iIndex = 0;
        try{
            while(rs.next() ){
                for(int i = 0;i < rs.getMetaData().getColumnCount(); i++){
                    all_result[iIndex][i] = rs.getString((i+1));
                }
                iIndex ++;
            }
            rs.close();
            stmt.close();
        }catch(SQLException sqlx){
            System.out.println(sqlx);
        }
        return all_result;
    }
    
    /**
     * Gibt die Anzahl der Datensätze zurück
     * @return Integer | 0 bei Fehler
     * @throws SQLException 
     */
    public int getRowCount(){
        int iRowCount = 0;
        try{
            rs.last();
            iRowCount = rs.getRow();
            rs.beforeFirst();
        }catch (SQLException sqlx){
            
        }
        return iRowCount;
    }
    
    /**
     * Gibt den letzten MySQL Fehler zurück (Status + Fehlercode)
     * @return String
     */
    public String getLastError(){
        return sError;
    }
    
    /**
     * Gibt die zulezt eingefügte Index-ID zurück
     * @return Interger | 0 bei Fehler
     * @throws SQLException 
     */
    public int getLastID(){
        int iLastID = 0;
        try{
            stmt = conn.createStatement();
            rs = stmt.executeQuery("SELECT LAST_INSERT_ID()");
            if (rs.next()) {
                iLastID = rs.getInt(1);
            }
            rs.close();
            stmt.close();
        }catch(SQLException sqlex){
            
        }
        return iLastID;
    }
    
    
}

THX 4 HELP

Tom

ps: Die Klassen sind noch nicht ganz fertig.
 
tom g. hat gesagt.:
Ich habe angenommen, wenn ich das Jar mit in die Libarys packe, brauche ich es nicht mehr zu importieren.

Sinniger wäre es gewesen diese Annahme nachzuschlagen. Dann hättest du von selbst herausgefunden, dass sie falsch ist.
 
Hallo AlArenal,

eventuell habe ich mich falsch ausgedrückt.

Ich habe das Jar schon in Netbeans importiert,

dachte aber ich könnte auf
Code:
import org.togo.mysqldb.*;

verzichten.

Mit dem hsqldb.jar oder mysql-connector-java-5.0.5-bin.jar mache ich es doch genauso. :bahnhof:

Da stehen dann auch keine import Anweisungen im Code.


THX

Tom
 
Ich hab dich schon richtig verstanden, aber mein Wink mit dem Laternenmast kam wohl nicht an: Schnapp dir ein Buch! 😛

Und was deine Anmerkung zu hsqldb und dem JDBC Treiber angeht: Leite nicht falsche Annahmen aus fehlerbehafteten Beobachtungen ab, sondern beschäftige mit den Basics indem du nachliest wie die Sprache funktioniert.

Sonst brauchst du 1000 Jahre (und wir viel Nerven) ehe du dir Java per Trial & Error eingebläut hast 😉

Ist doch kein Hexenwerk sich eben in nem Buch Kapitel über Imports und Packages reinzuziehen.
 
AlArenal hat gesagt.:
Ich hab dich schon richtig verstanden, aber mein Wink mit dem Laternenmast kam wohl nicht an:

Doch kam an, läuft ja jetzt, hatte sogar schon den Hacken gesetzt. 😀

AlArenal hat gesagt.:
Schnapp dir ein Buch! 😛

Habe ich ein halbes Dutzend.

AlArenal hat gesagt.:
Und was deine Anmerkung zu hsqldb und dem JDBC Treiber angeht: Leite nicht falsche Annahmen aus fehlerbehafteten Beobachtungen ab, sondern beschäftige mit den Basics indem du nachliest wie die Sprache funktioniert.

Auch wenn man sich mit den Basics beschäftigt hat, darf man, glaub ich, auch mal falsche Annahmen aus fehlerhaften Beobachtungen ziehen.

Beobachtungen sind nun mal subjektiv und da ist es keine Schande auch mal auf dem Holzweg zu sein.

AlArenal hat gesagt.:
Sonst brauchst du 1000 Jahre (und wir viel Nerven) ehe du dir Java per Trial & Error eingebläut hast 😉

Soweit wird es nicht kommen.

AlArenal hat gesagt.:
Ist doch kein Hexenwerk sich eben in nem Buch Kapitel über Imports und Packages reinzuziehen.

Habe vorher sogar die Suchfunktion im Forum benutzt.
Es ist halt kommunikativer seine Fragen in einem Forum zu stellen.
Würden alle Ihre Problemchen mit einem Buch lösen
können, währe hier bald tote Hose.

Danke für Deine Bemühung und Zeit.

Tom
 
Sicher ist ein Forum kommunikativer, aber das sind Basics die jedes Buch abdeckt und die auch ziemlich banal sind und auf wenigen Seiten abgefrühstückt sind. Dazu reint ne unidirektionale Kommunikation völlig aus und da muss man nicht mit anderen über eigene Vermutungen philosophieren.

Was mich immer etwas nervt ist, dass viele einfach erst aus Bequemlichkeit ins Forum posten, anstatt selbst nach einer Lösung zu suchen, zumal du in deinem Fall schon selbst was von "Vermutung" schrubst. Da ist es doch das Naheliegendste der Welt diese Vermutung zu überprüfen. Und wenn du ein halbes Dutzend Bücher hast - umso einfacher! (vorausgesetzt es sind Java-Bücher und nicht Harry Potter 😛 ). Oder sind deine Bücher nur dazu da um bei den Weibern Eindruck zu schinden?

So vergeudet man aber auch die Zeit derer, die den Post erstmal lesen (und dann entschieden ob sie was antworten oder nicht).
 
AlArenal hat gesagt.:
Sicher ist ein Forum kommunikativer, aber das sind Basics die jedes Buch abdeckt und die auch ziemlich banal sind und auf wenigen Seiten abgefrühstückt sind. Dazu reint ne unidirektionale Kommunikation völlig aus und da muss man nicht mit anderen über eigene Vermutungen philosophieren.

OK.

AlArenal hat gesagt.:
Oder sind deine Bücher nur dazu da um bei den Weibern Eindruck zu schinden?

Mit fast 40 Jahren und etlichen Ehejahren brauch ich das nicht mehr; :wink:

Aber es gibt nun mal Situationen wo es umständlicher ist die Bücher heraus zu suchen, als mal kurz im Forum nachzufragen. In so einer Situation befinde ich mich gerade, und hatte auch bei Google kein Glück.

Aber ich werde jetzt mal "vorsichtiger" Posten.

Lerne ja auch gerne dazu.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben