Conexión de java
con SQL server 2008 mediante JDBC.
Una
de las operaciones más importantes que realizará con el Controlador JDBC de
Microsoft para SQL Server es establecer una conexión con una base de datos de
SQL Server. Todas las interacciones con la base de datos tienen lugar a través
del objeto SQLServerConnection y, debido a que el controlador JDBC posee una arquitectura
tan plana, casi todos los comportamientos interesantes afectan al objeto SQLServerConnection.
Entonces el formato general de la URL de conexión es:
|
[;property=value[;property=value]]
|
Dónde:
jdbc:sqlserver:// (obligatorio) es el subprotocolo y es constante.
serverName (opcional) es la dirección del servidor con el que se establece la conexión. Puede ser un DNS o una dirección IP o bien un host local o 127.0.0.1 para el equipo local. Si no se especifica en la URL de conexión, es necesario especificar el nombre del servidor en la colección de propiedades.
instanceName (opcional) es la instancia para establecer la conexión con serverName. Si no se especifica, se establece una conexión con la instancia predeterminada.
portNumber (opcional) es el puerto para establecer la conexión con serverName. El valor predeterminado es 1433. Si usa el valor predeterminado, no es necesario especificar el puerto ni el signo ":" precedente en la dirección URL.
Una vez que tengan definida su cadena de conexión, se puede crear la conexión a la BD, en mi caso me descargue el Microsoft SQL Server JDBC Driver 2.0 liberado en marzo de este año, pero bueno un ejemplo:
jdbc:sqlserver:// (obligatorio) es el subprotocolo y es constante.
serverName (opcional) es la dirección del servidor con el que se establece la conexión. Puede ser un DNS o una dirección IP o bien un host local o 127.0.0.1 para el equipo local. Si no se especifica en la URL de conexión, es necesario especificar el nombre del servidor en la colección de propiedades.
instanceName (opcional) es la instancia para establecer la conexión con serverName. Si no se especifica, se establece una conexión con la instancia predeterminada.
portNumber (opcional) es el puerto para establecer la conexión con serverName. El valor predeterminado es 1433. Si usa el valor predeterminado, no es necesario especificar el puerto ni el signo ":" precedente en la dirección URL.
Una vez que tengan definida su cadena de conexión, se puede crear la conexión a la BD, en mi caso me descargue el Microsoft SQL Server JDBC Driver 2.0 liberado en marzo de este año, pero bueno un ejemplo:
01
|
//carga del Driver
|
|
02
|
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
|
03
|
//Se establece la conexion con el servidor de BD
|
||
04
|
dbConnection =
DriverManager.getConnection("jdbc:sqlserver://192.168.0.123:1433;databaseName=BD_Check;",
|
||
05
|
"User1", "12345");
|
|
06
|
//Se crea el objeto statement
|
07
|
Statement stm = dbConnection.createStatement();
|
|
08
|
private PreparedStatement enrollStmt;
|
09
|
enrollStmt =
dbConnection.prepareStatement("SELECT * FROM enroll");
|
|
10
|
enrollStmt.executeQuery()
|
11
|
//Posteriormente se cierra la conexión
|
|
12
|
if(!enrollStmt.isClosed())
|
13
|
enrollStmt.close();
|
|
14
|
if(!dbConnection.isClosed())
|
15
|
dbConnection.close();
|
Conectar base de datos SQL Server 2008
En anteriores
entradas expliqué como he ido desarrollando una
aplicación para Androide que enviaba mensajes al pc para un proyecto de fin de
curso.
Bien, ahora voy a explicar en qué consiste la
aplicación exactamente, que aún no lo he hecho. Se trata de desarrollar un
programa para bares, en la cual cada camarero tendrá una PDA, o dispositivo androide,
desde la cual anotará los pedidos de los clientes. La PDA enviará estos pedidos
al servidor que contiene una Base de datos, y este imprimirá los tickets.
Para esto es necesario establecer una conexión
PDA-Base de datos del Servidor.
Lo primero que hay que hacer es instalar SQL server
2008 y configurarlo para que se pueda acceder de dos formas (con
autentificación Windows y con autentificación SQL server), esto se pregunta
durante la instalación de SQL server, posteriormente hay que crear un usuario
SQL server, aquí se explica cómo
hacerlo . También debemos permitir conexiones
remotas.
Ahora vamos al código, (que he sacado de un ejemplo de
la web de Microsoft ),
al cual solo he añadido una consulta a una tabla de mi base de datos.
Ahora vamos a crear un proyecto, yo lo he creado en eclipse,
es necesario agregarle las librerías JDBC para que hagan de puente entre la
aplicación y la base de datos. En eclipse se añaden en las propiedades del
proyecto/Java Build Path/Libraries, estas librerías podéis descargarlas
de aquí ,
si no lo hacéis en eclipse, en este enlace se ve
como configurarlo
También puedes ver cómo Conectar una
base de datos ORACLE a aplicación Java remotamente
Dejo el código por aquí:
import java.sql.Statement;
public class Test {
private java.sql.Connection connection = null;
private final String url = "jdbc:microsoft:sqlserver://";
private final String serverName = "192.168.1.38";
private final String portNumber = "1433";
private final String databaseName = "db_WifiBar";
private final String userName = "algui91";
private final String password = "1234";
private final String statement = "select * from
prueba;";
// Informs the
driver to use server a side-cursor,
// which permits
more than one active statement
// on a connection.
private final String selectMethod = "Direct";
// Constructor
public Test() {
}
private String getConnectionUrl() {
return url + serverName + ":" + portNumber + ";databaseName="
+ databaseName + ";selectMethod=" + selectMethod + ";";
}
private java.sql.Connection getConnection() {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
connection = java.sql.DriverManager.getConnection(getConnectionUrl(),
userName, password);
if (connection != null)
System.out.println("Connection
Successful!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Error Trace in getConnection() : "
+ e.getMessage())
} return connection;
}
public void displayDbProperties() {
java.sql.DatabaseMetaData dm = null;
java.sql.ResultSet result = null;
try {
connection = this.getConnection();
if (connection != null) {
dm = connection.getMetaData();
System.out.println("Driver
Information");
System.out.println("\tDriver Name: " + dm.getDriverName());
System.out
.println("\tDriver Version: " +dm.getDriverVersion());
System.out.println("\nDatabase Information ");
System.out.println("\tDatabase Name: "
+ dm.getDatabaseProductName());
System.out.println("\tDatabase Version: "
+ dm.getDatabaseProductVersion());
Statement select = connection.createStatement();
result = select.executeQuery(statement);
while (result.next()) {
System.out.println("Nombre: " + result.getString(1) + "\n");
System.out.println("Apellido:
" + result.getString(2) + "\n");
System.out.println("Dni: " + result.getString(3) + "\n");
}
result.close();
result = null;
closeConnection();
} else
System.out.println("Error: No
active Connection");
} catch (Exception e) {
e.printStackTrace();
}
dm = null;
}
private void closeConnection() {
try {
if (connection != null)
connection.close();
connection = null;
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
Test myDbTest = new Test();
myDbTest.displayDbProperties();
}
}
Y la sálida de ejecutar la aplicación:
Connection
Successful!
Driver
Information
Driver Name: SQLServer
Driver Version: 2.2.0022
Database
Information
Database Name: Microsoft SQL Server
Database Version: Microsoft SQL Server Yukon -
10.0.1600
Algunos datos de la BD
Nombre: Alejandro
Apellido: Alcalde
Dni: 12345678
No hay comentarios:
Publicar un comentario