Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ConexióndeJSPconBasedeDatos PDF
ConexióndeJSPconBasedeDatos PDF
2.
2 Sentencias JDBC
Con la conexin a la base de datos realizada, ya se podrn ejecutar sentencias
SQL en la misma para consultar datos, actualizar tablass y aadir/borrar
registros.
Una Sentencia JDBC es un objeto Statement (traducido sera Sentencia) de
JDBC y se utiliza para mandar sentencias SQL a la Base de Datos y no debera
confundirse con una sentencia SQL, es decir, sentencia JDBC
(objeto Statement) y sentencia SQL no son lo mismo. Un objeto Statement se
asocia con una conexin abierta y no con una sentencia SQL en particular, por
tanto, un objeto Statement es una pasarela entre la Base de Datos y la JSP que
va a permitir ejecutar una o ms sentencias SQL en la Base de Datos.
Para crear un objeto Statement nos hace falta una conexin abierta con la base
de datos, por ejemplo:
//Nos conectamos a la BD local
conexion
=
DriverManager.getConnection("jdbc:sqlserver://localhost:1433;" +
"databaseName=pedidoplus;user=sa;password=12345;";
);
//Escribimos el final de la pgina
//Creamos una sentencia a partir de la conexin
sentencia=conexion.createStatement();
Tenemos que tener en cuenta que una sentencia va asociada a una conexin, por
lo que si se cierra la conexin se cierra la sentencia. Tambin podemos cerrar
las sentencias mediante el mtodo close() de forma anloga como hacamos con
las conexiones.
"databaseName=pedidoplus;user=sa;password=12345;";
//Nos conectamos a la BD local
conexion = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;
databaseName=pedidoplus;user=sa;password=12345;");
//Escribimos el final de la pgina
//Creamos una sentencia a partir de la conexin
sentencia=conexion.createStatement();
resultados=sentencia.executeQuery("SELECT * FROM articulo");
<table border="1">
<thead>
<tr>
<th>codigo de Articulo</th>
<th>Nombre</th>
<th>Precio </th>
</tr>
</thead>
<tbody>
<%
while(resultados.next()) {
String codigo = resultados.getString("artcodigo");
String nombre =resultados.getString("artnombre");
String Precio = resultados.getString("artprecio");
%>
<tr>
<td><%=codigo%></td>
<td><%=nombre%></td>
<td><%=Precio%></td>
</tr>
<%
}
%>
</tbody>
</table>
<%
La clase ResultSet tiene un cursor que puede ser usado para movernos entre las
distintas filas de los resultados de la consulta y que inicialmente apunta a la
primera fila. Podemos usar el mtodo next() (como en el ejemplo anterior) para
ir de una fila a la siguiente, por lo que la llamada del mtodo devolver true si
hay un siguiente registro y false si ya est en el ltimo.
Para obtener los distintos atributos de un registro se utilizarn, normalmente,
los mtodos getString(atributo) o getObject(atributo), cuyo parmetro es una
cadena con el nombre del atributo que quiere recuperar. La diferencia entre
ambos mtodos es que el primero nos devuelve una cadena (clase String) y el
segundo un objeto genrico (clase Object). A partir de la claseObject se puede
convertir el atributo al tipo de dato que nos interese aunque tambin podemos
utilizar el mtodo get apropiado. Para ms informacin podemos consultar
la Tabla 1:
Ti po de dat o
SQL
BI GI NT
Long
BI NARY
by t e[ ]
by t e[ ] get By t es ( )
BI T
Bool ean
CHAR
St r i ng
St r i ng get St r i ng( )
DATE
j av a. s ql . Dat e
DECI MAL
DOUBLE
Doubl e
FLOAT
Doubl e
I NTEGER
I nt eger
i nt get I nt ( )
LONGVARBI NARY
by t e[ ]
I nput St r eam
get Bi nar y St r eam( )
LONGVARCHAR
St r i ng
I nput St r eam
get As c i i St r eam( )
I nput St r eam
get Uni c odeSt r eam( )
NUMERI C
REAL
Fl oat
SMALLI NT
I nt eger
TI ME
j av a. s ql . Ti me
j av a. s ql . Ti me get Ti me( )
TI MESTAMP
j av a. s ql . Ti mes t amp
j av a. s ql . Ti mes t amp
get Ti mes t amp( )
TI NYI NT
I nt eger
by t e get By t e( )
VARBI NARY
by t e[ ]
by t e[ ] get By t es ( )
VARCHAR
St r i ng
St r i ng get St r i ng( )
VARCHAR2
St r i ng
St r i ng get St r i ng( )
TABLA 1:Mtodos para extraer los datos de los atributos a partir de un objeto ResultSet
<%
}
%>
</tbody>
</table>
Hay que tener en cuenta que el objeto ResultSet est ligado al
objeto Statement con el que fue creado por lo que si se cierra o se vuelve a usar
para otra sentencia SQL el contenido de ResultSet se elimina automticamente.
Tambin hay mtodos para saber en qu fila nos encontramos como
son getRow() (nos da el nmero de fila), isFirst()(nos pregunta si es la
primera), isBeforeFirst()(si estamos justo antes de la primera fila), isLast()(si
es la ltima fila), isAfterLast()(si ya no nos quedan ms filas).
Tambin se puede determinar cules datos son nulos , esto debido a que los
objetos como getInt() no pueden devolver un valor null, para este caso la
clase ResultSet proporciona el mtodowasNull() para determinar si se ha
devuelto valor nulo
Double Precio = resultados.getDouble("artprecio");
Double descuento=0;
if ( !resultados.wasNull() )
descuento = Precio*0.10;
else
descuento = 0;