JSP Datenbankverbindung

  • Themenstarter Themenstarter smoofs
  • Beginndatum Beginndatum
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.
 
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
 
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.
 
Microsoft SQL Server (jTDS Driver)

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

Default Port: 1433

JDBC URL

jdbc:jtds:sqlserver://server[😛ort][/database][;property=value[;...]]
jdbc:jtds:sybase://server[😛ort][/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.
 
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.
 
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.
 
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?
 
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?
 
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.
 

Zurück
Oben