MS SQL-Server DB-Zugrif !HILFE!

CAVITA

Grünschnabel
Hallo zusammen,
ich hatte letztens eine ähnliche Frage in das Forum gestellt konnte aber leider nichtviel mit den Antworten anfangen. Deshalb stelle ich die rage ähnlich in anderer Form nochmal rein.Ich bin schon am verzweifeln und bitte um eine schnelle Antwort. Mein B Zugriff aus meiner DB-Klasse funktioniert nicht richtig, Fehlermeldung"Fehler bei Verbindung zur Datenbank" die aus der catch-Anweisung ausgegeben wird.

Folgendes habe ich gemacht.

1. die .jar Datei des JDTS-Datenbanktreiber in den Tomcat lib-Ordner kopiert.
Frage: ist dieses ausreichend oder müssen innerhalb der web- server.xml einstellungen vorgenommen werden.

2.Ist es ausreichend nur die Treiber innerhalb der Klasse aufzurufen um die Verbindung über denDriverManger zum DBMS des Datenbankservers aufbauen zu lassen oder müssen Methoden des Treibers, wie Thomas Darimont in seiner DB-SQL Beschreibung aufzeigt,aufgerufen werden.

Danke im Vorfeld..Grüsse...CAVITA

Codestück der DB KLASSE-Verbindung;
public class bv_Dbbean
{

// Variablendeklaration für die Datenbankverbindung
private Connection con;
private Statement st;
private String s;
private ResultSet rs;



/**
*
*/
public bv_Dbbean()
{
try
{
try
{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
con = DriverManager.getConnection("jdbc:jtds:sqlserver://194.180.75.50:1433/dbo_Winterdienst","","");
}
catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
catch (SQLException e)
{
System.out.println("Fehler bei Verbindung zur Datenbank");
}
}

public ResultSet getRs(String query)
{
try
{
st = con.createStatement();
rs = st.executeQuery(query);
}
catch (Exception e)
{
System.out.println("Fehler bei Datenbankabfrage" + e.getMessage());
}
return rs;
}

public ResultSet insert_Benutzer(Benutzer m)
{
s = "Insert into Winterdienst";
s = s + "(Name, Telefon)";
s = s + "values(";
s = s + "\"" + m.getM_Name() + "\"" + ", ";
s = s + "\"" + m.getM_TelefonNr() + "\"" ;
s = s + ")";

rs = getRs(s);
return rs;
}

public ResultSet upd_Benutzer(Benutzer m)
{
s = "Update Winterdienst SET";
s = s + "Name = \"" + m.getM_Name() + "\"";
s = s + "," + " Telefon = \"" + m.getM_TelefonNr() + "\"";

rs = getRs(s);
return rs;
}

public ResultSet del_Benutzer(Benutzer m)
{
s = "Delete from Winterdienst where ID =" + m.getM_Id_Name();
rs = getRs(s);
return rs;
}

public ResultSet Select_Benutzer()
{
s = "Select * From Winterdienst";
rs = getRs(s);
return rs;
}

}
 
Hallo!

Wenn mehrere Webanwendungen innerhalb dieser Tomcat Instanz den Jtds Treiber benötigen solltest du ihn nach %TOMCAT_HOME%/common/lib kopieren. Andernfalls solltest du ihn in das WEB-INF/lib Verzeichnis deiner Webanwendung Kopieren.

Ansonsten könnte man noch versuchen die JtdsDatasource zu verwenden...

2.Ist es ausreichend nur die Treiber innerhalb der Klasse aufzurufen um die Verbindung über denDriverManger zum DBMS des Datenbankservers aufbauen zu lassen oder müssen Methoden des Treibers, wie Thomas Darimont in seiner DB-SQL Beschreibung aufzeigt,aufgerufen werden.

Das händische zusammenbauen des JDBC Connection Strings ist veraltet und fehleranfällig. Benutze doch besser die entsprechende Datasource. Weiterhin solltest du dich mal hier im Forum schlau machen, wie man Datenquellen im Tomcat hinterlegt und dann von jeder Webanwendung drauf zugreifen kann.

http://www.tutorials.de/tutorials182544.html&highlight=Datenquelle

Zusätzlich solltest du nochmal überprüfen ob deine Datenbank wirklich den "richtigen" Namen trägt und du den SQL Server auf Mixed Authentication stehen hast, so dass auch SQL Basierte Authentifizierung und nicht nur Windows Authentifizierung aktiviert ist. Weiterhin solltest du noch nachschauen, ob deine Login Daten korrekt sind.

Gruß Tom
 
Hallo,
super vielen Dank schon mal, jetzt funktioniert es, wie du schon vorgeschlagen hast lag es an der SQL-Einstellung"MIxed Authentifikation". Aber nun habe ich ein anderes Problem das Eingaben die über die HTML-Text Eingabefelder nicht auf der DB hinterlegt werden.
Fehlermeldung: Der Name 'ABC' sind in diesem Kontext nicht zulässig. Nur KOnstanten, Variablen und Ausdrücke sind hier zulässig. Spaltennamen sind nicht zulässig..

Wie ist es gemeint. Die Eingaben werden grundlegend als "String" eingelesen. Ist es erforderlich den Datentyp vor der SQL-Anweisung in die entsprechenden DB-Typ umzuwandeln

Gruß
CavitA
 
Hallo!

Versuchs doch mal so:
Code:
s = "INSERT INTO Winterdienst (Name, Telefon) values('";
s = s + m.getM_Name() + "', '";
s = s + m.getM_TelefonNr() + "')";

Gruß Tom
 

Neue Beiträge

Zurück