# MS SQL Datenbankzugriff per JDBC



## Azubili (8. Mrz 2006)

Hallo 

Ich habe hier ein kleines Problem und ich finde es nicht =(

Ich hoffe ihr könnt mir helfen 

Der Quelltext ist zwar von mir etwas *zenisert* worden *ggg*

Dankeschonmal

J€ns





```
package jdbc;
     import java.sql.Connection;
	 import java.sql.DriverManager;
	 import java.sql.ResultSet;
	 import java.sql.SQLException;
	 import java.sql.Statement;
	 import com.microsoft.jdbc.sqlserver.SQLServerDriver;

	 public class DBConnection {
	 
	public static final String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
	public static final String PROTOCOL = "jdbc:microsoft:sqlserver://IP:PORT/Datenbankname";
	public static final String USER = "admin";
	public static final String PASS = "admin";
	
	public static void main(String[] args)
	{
		try {
			Class.forName(DRIVER);
		} catch (ClassNotFoundException e) {
			System.err.println("Keine Treiber-Klasse!");
			return;
		}
		Connection con = null;
		try {
			con = DriverManager.getConnection(PROTOCOL, USER, PASS);
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery("SELECT * FROM PersonalNr");
			while (rs.next())
				System.out.println("%s, %s, %s%n" + rs.getString(1) + rs.getString(2) + rs.getString(3));
			rs.close();
			stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
			return;
		} finally {
			if (con != null)
				try {
					con.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
	}
}
```


```
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unable to connect.  Invalid URL.
	at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
	at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
	at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
	at java.sql.DriverManager.getConnection(DriverManager.java:525)
	at java.sql.DriverManager.getConnection(DriverManager.java:171)
	at jdbc.DBConnection.main(DBConnection.java:26)
```


----------



## Azubili (8. Mrz 2006)

Azubili hat gesagt.:
			
		

> Hallo
> 
> Ich habe hier ein kleines Problem und ich finde es nicht =(
> 
> ...



Hab den Fehler selbst gefunden, sorry.
werde aber vllt heute noch ein paar fragen zu JDBC haben 

Der Fehler lag genau in der rot makierten Stelle:

es heißt nicht:
public static final String PROTOCOL = "jdbc:microsoft:sqlserver://IPORT/Datenbankname";

sondern:
	public static final String PROTOCOL = "jdbc:microsoft:sqlserver://IPORT;DatabaseName=Datenbankname;SelectMethod=Cursor;User=admin;password=admin";


greetz J€ns


----------



## Azubili (8. Mrz 2006)

Wenn ich in einer JSP einen Button drücke,
soll eine Webanwendung aufgerufen werden.

Das ist ja kein Problem, aber der http:// addresse müssen bestimmte Parameter vom typ String übergeben werden und die liegen nur verknüpft auf einer Datenbank.

In der JSP Anwendung selber kommen nur die Primärschlüssel aus der Tabelle meist vor. z.b. brauch ich die gemeinde, die steht in dem Programm z.B. mit Bonn da, sie wird aber in einem Zahlenwert verlangt , dieser wert sollte so aussehen 3820..Kennzahl von Bonn.

Jetzt soll ich durch  den Gemeinde namen (Bonn) auf der Datenbank dieses Gemeindeerkennungszeichen (Kennzahl von Bonn) suchen.

Genauso muss ich das mit weiteren String-Paramtern machen.
Ich habe aber im Moment keine Ahnung wie.

Wie mach ich das am Besten.

Sorry wenn ich mich etwas undeutlich ausdrücke 

 ???:L 

Dankeschonmal im vorraus

J€ns

[schild=1 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]java-forum.org ist einsame Spitze! Nette Leute, hilfreiche Tips![/schild]


----------



## HinkerAndreas (3. Apr 2006)

Hallo!!!
Habs auch mit dem obigen Code probiert.
Muss ich ganz oben bei der Definition von Treiber, Protocol den Pfad angeben. Den Pfad vom Treiber ???
Protocol?????


----------



## SamHotte (4. Apr 2006)

Azubili hat gesagt.:
			
		

> Wenn ich in einer JSP einen Button drücke,
> soll eine Webanwendung aufgerufen werden.
> 
> Das ist ja kein Problem, aber der http:// addresse müssen bestimmte Parameter vom typ String übergeben werden und die liegen nur verknüpft auf einer Datenbank.
> ...



Hängt davon ab, wie deine Datenbankrelation aussieht. Angenommen, du hast eine Tabelle "Gemeinde" mit dem Schema GEMEINDE(GNR, Kennzahl, ...), dann brauchst du eine SELECT-Abfrage nach dem Schema "SELECT GNR, Kennzahl FROM GEMEINDE WHERE KENNZAHL=x".

In Java realisierst du das am besten über ein PreparedStatement. Beispiel:

```
int gesuchteKennzah=4711;
String sql="SELECT GNR, Kennzahl FROM GEMEINDE WHERE KENNZAHL=?"; //kann bei Bedarf mehrere Fragezeichen enthalten
Connection con = DriverManager.getConnection(url); // so, wie sonst auch
PreparedStatement pstmt = con.prepareStatement(sql);
// Parameter setzen - Spalte = Reihenfolge der Fragezeichen
pstmt.setInt(1, gesuchteKennzahl);
// hier weitere Parameter, falls vorhanden
ResultSet rs=pstmt.executeQuery();
```

.. natürlich fehlen jetzt noch (1.) ein try-catch-Block um das ganze herum für die SQLException sowie (2.) die Auswertung des ResultSet. Aber das kennst du ja schon.

War das die Frage? Bin mir nicht sicher ... ???:L


----------

