Estoy aprendiendo Java y necesito ejecutar algo simple para recuperar algunos datos de MSSQL a través de JDBC. El ejemplo en mi libro no funciona (pero es varios años) y por debajo de este ejemplo de MS no funciona para mí tampoco:JDBC: Ejemplo simple de conexión MSSql no funciona
http://msdn.microsoft.com/en-us/library/ms378956(v=sql.90).aspx
Aquí está mi código:
package javasql;
import java.sql.*;
import java.util.*;
public class Program {
private static String url = "jdbc:sqlserver://localhost\\SQLExpress;database=Northwind;integratedSecurity=true;";
//private static String userName = "sa";
//private static String password = "myPassword";
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
RunDemo();
}
public static void RunDemo() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection connection = DriverManager.getConnection(url);
Statement statement = connection.createStatement();
ResultSet results = statement.executeQuery("SELECT ProductName, Price FROM Products ORDER BY ProductName");
while(results.next()) {
System.out.println("Product Name: " + results.getNString("ProductName") + " Price: $" + results.getFloat("UnitPrice"));
}
} catch (ClassNotFoundException | SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
Cuando ejecuto el código, no lo entiendo excepciones emitidas .. acabo de recibir esto en la ventana de salida:
run:
com.microsoft.sqlserver.jdbc.SQLServerDriver
BUILD SUCCESSFUL (total time: 0 seconds)
estoy usando NetBeans 7.2. Por favor, alguien dame un ejemplo de trabajo.
EDIT:
Por cierto, para la cadena de conexión, donde se ve la \\SQLExpress
, yo intente quitar eso y usando instanceName=SQLExpress
lugar .. pero eso no tiene ningún efecto, ya sea.
EDIT 2:
OK, he descargado la última versión del controlador JDBC para MSSQL desde MS y se hace referencia a los 2 archivos JAR en ese país. Ahora estoy recibiendo esta salida:
run:
The connection to the host localhost, named instance SQLExpress failed.
Error: "java.net.SocketTimeoutException: Receive timed out".
Verify the server and instance names and check that no firewall is blocking UDP traffic to port 1434.
For SQL Server 2005 or later, verify that the SQL Server Browser Service is running on the host.
BUILD SUCCESSFUL (total time: 15 seconds)
Progreso .. Por lo menos podemos ver que está intentando conectarse ahora, puede que alguien me ilumine en cuanto al error por encima de embargo?
Datos 3:
2 más problemas fijos .. uno es permitir a SQL Server Browser y la segunda fue la habilitación de TCP/IP para SQL Server. Gracias @Vikdor Ahora estoy recibiendo este error:
run:
The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
BUILD SUCCESSFUL (total time: 15 seconds)
he comprobado ventanas cortafuegos y ha añadido una regla de entrada para permitir que el puerto, pero todavía estoy consiguiendo el error anterior. ¿Algunas ideas?
EDITAR 4:
Probamos la solución en este enlace: http://www.coderanch.com/t/306316/JDBC/databases/SQLServerException-TCP-IP-connection-host
Ya no consiguiendo error en EDITAR 3. Ahora conseguir otro ...
run:
Sep 21, 2012 11:33:16 AM com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
This driver is not configured for integrated authentication. ClientConnectionId:577f359e-4774-45f3-96fb-588785911817
BUILD SUCCESSFUL (total time: 14 seconds)
Conseguir muy cansado de esto ahora ... ¿por qué Java, por qué? En serio ... Estoy contento de trabajar principalmente con .NET. Bueno, cuando encuentro la solución, voy a publicar aquí para asegurarse de que puede ayudar a los demás antes de que se vuelven locos como yo estoy a punto de ...
EDITAR 5:
Esto ayudó: java connecting to MicrosoftSQLServer 2005
Pongo la ruta del directorio en la variable de entorno PATH.No funcionó, así que también coloqué el sqljdbc_auth.dll
en mi carpeta JDK C:\Program Files\Java\jdk1.7.0_04\bin
. Resuelto
sqljdbc.jar us usamos en Java 1.5, sqljdbc4.jar requiere JDK6 + –