sqlserver microsoft forname example conexion java sql-server jdbc

java - microsoft - jdbc sql server jar



¿Cómo hacer que Java funcione con SQL Server? (9)

¿Has probado el controlador jtds para SQLServer?

Sé que esta es una pregunta básica, pero parece que no puedo encontrar una respuesta y me disculpo, si esta pregunta es demasiado estúpida, pero aquí vamos:

Se supone que debo trabajar con SQL Server (no hay problema hasta ahora) y con Java (me encanta Java, así que no hay problema aquí tampoco), pero ahora: ¿Qué se supone que debo hacer para que la combinación funcione? Obtuve : JRE 1.6 y sqljdbc4.jar ... Antes de poner sqljdbc4.jar en mi classpath tenía sqljdbc.jar en él y con un programa de prueba obtuve esta excepción:

21.08.2009 09:26:59 com.microsoft.sqlserver.jdbc.SQLServerConnection <init> SCHWERWIEGEND: Die Java-Laufzeitumgebung (Java Runtime Environment, JRE), Version 1.6, wird von diesem Treiber nicht unterstützt. Verwenden Sie die Klassenbibliothek ''sqljdbc4.jar'', die Unterstützung für JDBC 4.0 bietet. java.lang.UnsupportedOperationException: Die Java-Laufzeitumgebung (Java Runtime Environment, JRE), Version 1.6, wird von diesem Treiber nicht unterstützt. Verwenden Sie die Klassenbibliothek ''sqljdbc4.jar'', die Unterstützung für JDBC 4.0 bietet. at com.microsoft.sqlserver.jdbc.SQLServerConnection.<init>(SQLServerConnection.java:223) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:840) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at msSqlTest.DB.dbConnect(DB.java:13) at msSqlTest.TestConnection.main(TestConnection.java:7)

Perdón por el alemán ... Básicamente significa que debería usar sqljdbc4.jar, b / c el JRE que estoy utilizando no es compatible con el controlador. Así que puse sqljdbc4.jar en mi classpath, pero no funcionó, así que estoy un poco perdido, lo que podría hacer.

Tal vez alguien podría decirme de una manera a prueba de idiotas lo que debería hacer :(

Oh, sí, aquí está la aplicación de prueba que uso:

import java.sql.*; public class TestConnection{ public static void main(String[] args){ // Neue DB und los geht''s :) DB db = new DB(); db.dbConnect("jdbc:sqlserver://localhost:1433/muff", "user", "pw" ); } } class DB{ public void dbConnect( String db_connect_string, String db_userid, String db_password){ try{ Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver" ); Connection conn = DriverManager.getConnection( db_connect_string, db_userid, db_password); System.out.println( "connected" ); } catch( Exception e ){ e.printStackTrace(); } } };



El controlador que está utilizando es el controlador MS SQL Server 2008 (sqljdbc4.jar). Como se indica en la página de MSDN, requiere Java 6+ para funcionar.

http://msdn.microsoft.com/en-us/library/ms378526.aspx

La biblioteca de clases sqljdbc4.jar requiere un Java Runtime Environment (JRE) de la versión 6.0 o posterior.

Sugeriría usar el controlador 2005 que creo que está en (sqljdbc.jar) o como Oxbow_Lakes dice probar el controlador jTDS ( jtds ).


En efecto. El caso es que la versión 2008 R2 es muy complicada. El controlador JTD parece funcionar en algunos casos. En cierto servidor, el jTDS funcionó bien para una instancia de R2 de 2008. En otro servidor, sin embargo, tuve que usar el controlador JBDC de Microsoft sqljdbc4.jar. Pero luego, solo funcionaría después de configurar el entorno JRE a 1.6 (o superior).

Usé 1.5 para el otro servidor, así que guardé mucho tiempo en esto.

Problema complicado.


No coloque tanto el viejo sqljdbc.jar como el nuevo sqljdbc4.jar en su classpath; esto hará que (más o menos) impredecible qué clases se utilizan, si ambos JAR contienen clases con los mismos nombres calificados.

Dijiste que pusiste sqljdbc4.jar en tu classpath, ¿eliminaste el viejo sqljdbc.jar del classpath? Usted dijo "no funcionó", ¿qué significa eso exactamente? ¿Estás seguro de que todavía no tienes el JAR antiguo en tu classpath en algún lugar (quizás no explícitamente)?


Para cualquier persona que todavía esté buscando en Google esto, vaya a / blackboard / config / tomcat / conf y en wrapper.conf ponga una línea adicional en wrapper.java.classpath apuntando al sqljdbc4.jar y luego actualice el wrapper.conf.bb también

A continuación, reinicie los servicios de pizarra y tomcat y debería funcionar

No funcionará simplemente configurando su classpath java, usted tiene que configurarlo en los archivos de configuración de pizarra para apuntar a su archivo jar con la biblioteca jdbc


Si usa sqljdbc4.jar, use el siguiente código

ResultSet objResultSet = objPreparedStatement.getResultSet(); if (objResultSet == null) { boolean bResult = false; while (!bResult){ if (objPreparedStatement.getMoreResults()){ objResultSet = objPreparedStatement.getResultSet(); bResult = true; } } } objCachedRowSet = new CachedRowSetImpl(); objCachedRowSet.populate(objResultSet); if (CommonUtility.isValidObject(objResultSet)) objResultSet.close(); objResultSet = null;


Tal vez un poco tarde, pero usar diferentes controladores es excesivo para un caso de error del usuario:

db.dbConnect("jdbc:sqlserver://localhost:1433/muff", "user", "pw" );

debería ser cualquiera de estos:

db.dbConnect("jdbc:sqlserver://localhost/muff", "user", "pw" );

(usando una tubería con nombre) o:

db.dbConnect("jdbc:sqlserver://localhost:1433", "user", "pw" );

usando el número de puerto directamente; puede omitir 1433 porque es el puerto predeterminado, dejando:

db.dbConnect("jdbc:sqlserver://localhost", "user", "pw" );


Tuve el mismo problema con un cliente de mi empresa, el problema fue que el controlador sqljdbc4.jar intenta una conversión de caracteres entre la base de datos y el controlador. Cada vez que hacía una solicitud a la base de datos, ahora se pueden imaginar 650 conexiones al mismo tiempo, esto hizo mi sistema muy, muy lento, para evitar esta situación agrego en la Cadena de conexión el siguiente parámetro:

SendStringParametersAsUnicode=false, then te connection must be something like url="jdbc:sqlserver://IP:PORT;DatabaseName=DBNAME;SendStringParametersAsUnicode=false"

Después de eso, el sistema es muy rápido, ya que los usuarios están muy contentos con el cambio, espero que mi opinión sea la misma.