Kopieren Sie den Codecode wie folgt:
Paket com.groundhog.codingmouse;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Datenbankverwaltungsklasse
* @author CodingMouse
*20.2.2009
*/
öffentliche finale Klasse DBManager {
/**
* Datenbankverbindungsobjekt
*/
private Verbindung dbConnection = null;
/**
* Datenbankbefehlsausführungsobjekt
*/
private PreparedStatement preStatement = null;
/**
* Ergebnissatzobjekt
*/
privates ResultSet rsSet = null;
/**
* Versionsnummer des Datenbanktreibers
*/
privater statischer String driversVersion = null;
/**
* Datenbankserver-Login-Benutzername und Passwort-String-Konstanten (Standardwerte sind „sa“)
*/
privater statischer String DatabaseUser = "sa";
privater statischer String DatabasePassword = "sa";
/**
* Zeichenfolgenkonstante für den vollständigen Klassennamen des Datenbanktreibers
*/
privater statischer finaler String
DRIVER_CLASS_SQLSERVER2000 =
"com.microsoft.jdbc.sqlserver.SQLServerDriver"; // SQL
Direktverbindung zum Server 2000
privater statischer finaler String
DRIVER_CLASS_SQLSERVER2005 =
"com.microsoft.sqlserver.jdbc.SQLServerDriver"; // SQL
Server 2005 Direct Connect
privater statischer finaler String
DRIVER_CLASS_BRIDGECONNECT = "sun.jdbc.odbc.JdbcOdbcDriver";
// ODBC-Brückenverbindung
/**
* Konstanten der Datenbankverbindungszeichenfolge
*/
privater statischer finaler String
DATABASE_URL_SQLSERVER2000 =
„jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=stuD
B"; // Direktverbindung zu SQL Server 2000
privater statischer finaler String
DATABASE_URL_SQLSERVER2005 =
"jdbc:sqlserver://127.0.0.1:1433;DatabaseName=stuDB";
// SQL Server 2005-Direktverbindung
privater statischer finaler String
DATABASE_URL_BRIDGECONNECT = "jdbc:odbc:stuDBSource";
// ODBC-Brückenverbindung
/**
* Definieren Sie statische Instanzvariablen der Klasse selbst (gilt für Anwendungen im Singleton-[Ware]-Modus).
*/
privater statischer DBManager ConnectionManager = null;
/**
* Privatisierte Standardkonstruktion (gilt für Anwendungen im Singleton-[Ware]-Modus, um zu verhindern, dass Klassen direkt mit dem neuen Schlüsselwort instanziiert werden)
*/
privateDBManager() {
super();
}
/**
* Methode zum Abrufen einer Instanz der Datenbankverbindungsverwaltungsklasse (Anwendung des Singleton-[Ware]-Modus)
* @param version Versionsnummer des Datenbanktreibers, Wert: (version =
2000 |. Version = 2005 |. Version = odbc)
* @param Benutzername für die Anmeldung beim Datenbankserver
* @param Passwort-Datenbankserver-Login-Passwort
* @return Datenbankverbindungsverwaltungsobjekt
* @throws Ausnahmeparameter-Fehlerausnahme
*/
öffentlicher statischer DBManager getInstance(
String-Version,
String-Benutzer,
String-Passwort)
wirft eine Ausnahme {
if (!(version == "2000" || version == "2005"
||. version == "odbc")) {
throw new Exception("Die Versionsnummer des Datenbanktreibers ist falsch, der Wert kann nur „2000/2005/odbc" sein!");
}
//Speichern Sie die Versionsnummer des Datenbanktreibers
DriverVersion = Version;
if (user == null || user.equals("")) {
throw new Exception("Datenbankserver-Login-Benutzername darf nicht leer sein!");
}
//Speichern Sie den Benutzernamen und das Passwort für die Anmeldung beim Datenbankserver
DatenbankBenutzer = Benutzer;
DatenbankPasswort = Passwort;
// Anwenden des Singleton-[Ware]-Musters, um sicherzustellen, dass die Klasse selbst nur eine Instanz hat
if (connectionManager == null) {
ConnectionManager = new DBManager();
}
// Eine Instanz der Klasse selbst zurückgeben
return ConnectionManager;
}
/**
* Methode zum Herstellen einer Datenbankverbindung
* @return Datenbankverbindungsobjekt
*/
private Verbindung getConnection() {
versuchen {
Class.forName(
Treiberversion ==
„2000“
?
DRIVER_CLASS_SQLSERVER2000
: (driverVersion ==
„2005“
?
DRIVER_CLASS_SQLSERVER2005
:
DRIVER_CLASS_BRIDGECONNECT));
this.dbConnection =
DriverManager.getConnection(
Treiberversion ==
„2000“
?
DATABASE_URL_SQLSERVER2000
: (driverVersion ==
„2005“
?
DATABASE_URL_SQLSERVER2005
:
DATABASE_URL_BRIDGECONNECT),
Datenbankbenutzer,
DatenbankPasswort);
} Catch (ClassNotFoundException ex) {
System.err.println("SQL Server nicht gefunden
" + driversVersion + "Datenbanktreiberklasse: " + ex.getMessage());
//Informationen zum Ausnahmestapel auf der Konsole ausgeben
// ex.printStackTrace();
} Catch (Ausnahme ex) {
System.err.println("Get Database Connection Error: " + ex.getMessage());
//Informationen zum Ausnahmestapel auf der Konsole ausgeben
// ex.printStackTrace();
}
// Das Datenbankverbindungsobjekt zurückgeben
return this.dbConnection;
}
/**
* Methode zum Abrufen des Datenbankbefehlsausführungsobjekts
* @param sql SQL-Befehlsassembly-Anweisungszeichenfolge, die ausgeführt werden soll
* @return Datenbankbefehlsausführungsobjekt
*/
private PreparedStatement getPreparedStatement
(String sql) {
versuchen {
//Erstelle ein Datenbankbefehlsausführungsobjekt basierend auf dem erhaltenen Datenbankverbindungsobjekt
this.preStatement = getConnection
().prepareStatement(sql);
} Catch (Ausnahme ex) {
System.err.println("Fehler beim Abrufen des Datenbankbefehlsausführungsobjekts: " + ex.getMessage());
//Informationen zum Ausnahmestapel auf der Konsole ausgeben
// ex.printStackTrace();
}
// Das Ausführungsobjekt des Datenbankbefehls zurückgeben
return this.preStatement;
}
/**
* Update-Anweisung ausführen (Einfügen|Aktualisieren|Löschen)
* @param sql SQL-Befehlsassembly-Anweisungszeichenfolge, die ausgeführt werden soll
* @return die Anzahl der betroffenen Zeilen
*/
public intexecuteUpdate(String sql){
versuchen {
// Leeren Sie den ursprünglichen Inhalt des Ergebnismengenobjekts
this.rsSet = null;
//Führen Sie die Anweisung aus und geben Sie die Anzahl der betroffenen Zeilen zurück
Geben Sie this.getPreparedStatement zurück
(sql).executeUpdate();
} Catch (SQLException e) {
System.err.println("Fehler beim Aktualisieren der Daten:" +
e.getMessage());
0 zurückgeben;
}Endlich{
// Datenbankverbindungsressourcen schließen
closeDBResource();
}
}
/**
* Abfrageanweisung ausführen (Auswählen)
* @param sql SQL-Befehlsassembly-Anweisungszeichenfolge, die ausgeführt werden soll
* @Return-Ergebnismengenobjekt nach der Abfrage
*/
öffentliches ResultSetexecuteQuery(String sql){
versuchen {
// Leeren Sie den ursprünglichen Inhalt des Ergebnismengenobjekts
this.rsSet = null;
//SQL-Anweisung ausführen, um die Ergebnismenge zu erhalten
this.rsSet =
this.getPreparedStatement(sql).executeQuery();
} Catch (SQLException e) {
System.err.println("Abfragedatenfehler:" +
e.getMessage());
}
// Das Ergebnismengenobjekt zurückgeben
return this.rsSet;
}
/**
* Rufen Sie die Anzahl der Datensätze in der Ergebnismenge ab, die nach der Ausführung der angegebenen SQL-Anweisung zurückgegeben wird
* @param sql SQL-Befehlsassembly-Anweisungszeichenfolge, die ausgeführt werden soll
* @return Die Anzahl der aus den Abfrageergebnissen erhaltenen Datensätze
*/
public int getResultSetCount(String sql) {
//Speichern Sie die Zählervariable, die die Anzahl der aufgezeichneten Zeilen zurückgibt, nachdem die angegebene SQL-Anweisung ausgeführt wurde.
int count = 0;
versuchen {
// Leeren Sie den ursprünglichen Inhalt des Ergebnismengenobjekts
this.rsSet = null;
//SQL-Anweisung ausführen, um die Ergebnismenge zu erhalten
this.rsSet = this.getPreparedStatement
(sql).executeQuery();
// Durch die Ergebnismenge iterieren und den Zähler akkumulieren
while (this.rsSet.next()) {
count++;
}
} Catch (SQLException e) {
e.printStackTrace();
}
Rückgabeanzahl;
}
/**
* Datenbankverbindungsressourcen schließen (einschließlich Ergebnissatzobjekte, Befehlsausführungsobjekte und Verbindungsobjekte)
*/
public void closeDBResource() {
versuchen {
closeResultSet();
closePreparedStatement();
closeConnection();
} Catch (SQLException sqlEx) {
System.err.println(sqlEx.getMessage
());
//Informationen zum Ausnahmestapel auf der Konsole ausgeben
// sqlEx.printStackTrace();
}
}
/**
* Methode zum Schließen des Ergebnismengenobjekts
* @throws SQLException
*/
private void closeResultSet() wirft SQLException {
versuchen {
if (this.rsSet != null) {
this.rsSet.close();
this.rsSet = null;
}
} Catch (SQLException sqlEx) {
throw new SQLException("Fehler beim Schließen des Ergebnismengenobjekts: " + sqlEx.getMessage());
//Informationen zum Ausnahmestapel auf der Konsole ausgeben
// sqlEx.printStackTrace();
}
}
/**
* Methode zum Schließen des Datenbankbefehlsausführungsobjekts
* @throws SQLException
*/
private void closePreparedStatement() wirft
SQLException {
versuchen {
if (this.preStatement != null) {
this.preStatement.close();
this.preStatement = null;
}
} Catch (SQLException sqlEx) {
throw new SQLException("Fehler beim Ausführen des Datenbankbefehls: " + sqlEx.getMessage());
//Informationen zum Ausnahmestapel auf der Konsole ausgeben
// sqlEx.printStackTrace();
}
}
/**
* Methode zum Schließen der Datenbankverbindung
* @throws SQLException
*/
private void closeConnection() wirft SQLException {
versuchen {
if (this.dbConnection != null && (!
this.dbConnection.isClosed())) {
this.dbConnection.close();
}
} Catch (SQLException sqlEx) {
throw new SQLException("Fehler beim Schließen der Datenbankverbindung: " + sqlEx.getMessage());
//Informationen zum Ausnahmestapel auf der Konsole ausgeben
// sqlEx.printStackTrace();
}
}
}