JSP Datenbankverbindung

S

smoofs

Gast
Hallo liebe Java Gemeinde,

ich kriege es einfach nicht hin über jsp auf meine Datenbank siehe Grafik zuzugreifen kann mir da einer Hilfestellung geben und vielleicht auch sagen, welchen Treiber ich nehme und wie ich den connection String am besten aufbaue?

datenbank.png



Wenn ich ins Management Studio gehe mache ich das per Windows Authentifizierung.

Bislang sieht es so aus:

Java:
Connection conn = null;
java.sql.Statement s=null;
java.sql.ResultSet rs=null;
java.sql.PreparedStatement pst=null;



String url= "jdbc:jtds:sqlserver://Jens-PC\\SQLSERVERJens";
String id= "Jens-PC\\SQLSERVERJens\\Test";
String pass = "";
String result = "";
try{
Class.forName( "net.sourceforge.jtds.jdbc.Driver" );
 conn = DriverManager.getConnection( "jdbc:jtds:sqlserver://192.168.178.133:1433/Test", "Jens-PC\\SQLSERVERJens", " " );

}catch(Exception e){
    e.printStackTrace();
}
String sql = "select test from test";
try{
    s = conn.createStatement();
    rs = s.executeQuery(sql);
    while( rs.next() ){
        result = rs.getString(1);
    }
}catch(Exception e){
    e.printStackTrace();
}
finally{
    if(rs!=null) rs.close();
    if(s!=null) s.close();
    if(conn!=null) conn.close();
}

%>

Danke euch.
 

parabool

Bekanntes Mitglied
kenn mich nicht so mit ms-sql server aus aber was mir auffällt:

-die id im Connection-String stimmt nicht mit der oben deklarierten id überein.
- das "\\" in der id könnte problematisch sein
 

xehpuk

Top Contributor
Woran scheitert es denn?

Ansonsten allgemein:
  • Scriplets sind zu vermeiden.
  • Datenbank-Code gehört nicht in eine View.
 
S

smoofs

Gast
mein problem besteht eigentlich darin, die entsprechenden Informationen über Server,Tabelle,Datenbank an die entsprechende Position im Connection String zu bringen.

Im Bild sind diese ja zu sehen nur weiß ich nicht wirklich wo ich was eintrage.
 

askrason

Neues Mitglied
Microsoft SQL Server (jTDS Driver)

Driver Class: net.sourceforge.jtds.jdbc.Driver

Default Port: 1433

JDBC URL

jdbc:jtds:sqlserver://server[:port][/database][;property=value[;...]]
jdbc:jtds:sybase://server[:port][/database][;property=value[;...]]
jdbc:jtds:sqlserver://server/db;user=userName;password=password


Quelle : Guide to JDBC Driver URL's - MySQL, PostgreSQL, SQL Server, etc

Ich hoffe das hilft Dir.

Und nehm Die die Aussage von xehpuk zu Herzen.
 
S

smoofs

Gast
Also ich benutze nun folgenden Connection String

Java:
Class.forName( "net.sourceforge.jtds.jdbc.Driver" );
 conn = DriverManager.getConnection( "jdbc:jtds:sqlserver://Jens-PC/SQLSERVERJens/Test;user=Jens-PC/Jens;password=" );


Java:
java.sql.SQLException: Network error IOException: Connection refused: connect
	at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:410)
	at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
	at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
	at java.sql.DriverManager.getConnection(DriverManager.java:579)
	at java.sql.DriverManager.getConnection(DriverManager.java:243)
	at org.apache.jsp.index_jsp._jspService(index_jsp.java:349)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:337)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:198)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
	at java.net.Socket.connect(Socket.java:579)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:307)
	at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:257)
	at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:311)
	... 30 more

ist das Ergebnis. Kann jemand nachvollziehen wieso dies der Fall ist?

Benutze die jtds-1.2.5.jar




Habe versucht die dritte Version von askrason anzuwenden.
 

askrason

Neues Mitglied
Sonst schau Dir doch mal diesen Code an:

Java:
import java.sql.*;

public class testConnection
{
    public static void main(String[] args) 
    {
        DB db = new DB();
        db.dbConnect(
     "jdbc:jtds:sqlserver://localhost:1433/tempdb","sa","");
    }
}

class DB
{
    public DB() {}

    public voidn dbConnect(String db_connect_string, 
  String db_userid, String db_password)
    {
        try
        {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            Connection conn = DriverManager.getConnection(
    db_connect_string, db_userid, db_password);
            System.out.println("connected");
            
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
};

Quelle : Java Tips - How to connect Microsoft SQL Server using JDBC

Da ich kein SQLServer laufen habe, kann ich das leider nicht testen.
 
S

smoofs

Gast
Auch wenn meine Unfähigkeit scheinbar keine Grenzen kennt, hab nun mal so Datenbank Test Klasse erstellt:

Java:
package dbaccess; 

public class DBAccess
{
    public static void main(String[] args) 
    {
        DB db = new DB();
        db.dbConnect("jdbc:jtds:sqlserver://Jens-PC/SQLSERVERJens/Test","Jens-PC/Jens","");        
    }
}

und

Java:
package dbaccess;

import java.sql.Connection;
import java.sql.DriverManager;

class DB
{
    public DB() {}
 
    public void dbConnect(String db_connect_string,String db_userid, String db_password)
    {
        try
        {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            Connection conn = DriverManager.getConnection(
            db_connect_string, db_userid, db_password);
            System.out.println("connected");
            
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
};


Es gibt aber immernoch...


Java:
java.sql.SQLException: Network error IOException: Connection refused: connect
	at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:410)
	at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
	at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
	at java.sql.DriverManager.getConnection(DriverManager.java:579)
	at java.sql.DriverManager.getConnection(DriverManager.java:221)
	at dbaccess.DB.dbConnect(DB.java:23)
	at dbaccess.DBAccess.main(DBAccess.java:8)
Caused by: java.net.ConnectException: Connection refused: connect


Kann mir da wer weiterhelfen sind meine Daten wie Datenbankname usw. einfach falsch?
 

turtle

Top Contributor
ich habe keinerlei Ahnung von SQL Server, aber die Meldung kenne ich aus anderen Datenbanken, wenn die DB nicht konfiguriert ist, Anfragen via TCP/IP von anderen Rechern anzunehmen.

Ich würde probieren, ob
Code:
telnet <server_host> 1433
funktioniert. Wenn nicht kann es auch nicht via JDBC klappen. Leider weiss ich nicht, wo man das beim SQL Server einstellt, vielleicht irgendwo in der SQL Server's Network Utility?
 
M

maki

Gast
Hast du meine Links gelesen?

Dort wird beschrieben, wie man mit Telnet testet ob der Port offen ist und wie man den Port öffnet falls er nicht lauscht.
 

Oben