Académique Documents
Professionnel Documents
Culture Documents
<head>
<h2 align=center>
universidad de panam�
<br>
facultad de inform�tica electronica y comunicaciones
<br>
licenciatura en inform�tica<br>
para la gestion educativa y empresarial
<br><br>
<body leftmargin="10">
<br>
<br>
<h2 align=left><b>introduccci�n:</b></h2>
<pre face="arial" align=justity size="3">
para una clara comprensi�n de lo que sucede y de lo que necesitamos para hacer
una conexi�n
de una base de datos y para la consulta de la base de dato debemos comprender lo
que es odbc.
jdbc: es un conjunto de clases para la ejecuci�n de sentencias sql. permite
manipular cualquier
base de datos sql.
</pre>
<br>
<pre>
�ste m�todo de la clase class se utiliza para cargar el driver o drivers que
queremos usar,
utilizando s�lo una l�nea de c�digo. si, por ejemplo, queremos utilizar el puente
jdbc-odbc,
se cargar�a la siguiente l�nea de c�digo.
<font color="red">
<br><br>class.forname("sun.jdbc.odbc.jdbcodbcdriver");
</font>
<br>la documentaci�n del driver nos dar� el nombre de la clase a utilizar. por
ejemplo, si
el nombre de la clase es jdbc.driverxyz, cargar�amos el driver con esta l�nea de
c�digo.
<font color="red">
<br>class.forname("jdbc.driverxyz");
</font>
<br>
al hacer esto no necesitamos crear un ejemplar de un driver y registrarlo con el
drivermanager
porque la llamada a class.forname lo hace autom�ticamente. si hubi�ramos creado
nuestro propio
ejemplar, crear�amos un duplicado innecesario, pero no pasar�a nada.
una vez cargado el driver, se procede a realizar la conexi�n
</p>
<h3 align=left>hacer la conexi�N</h3>
<font size="3">
<b><p>drivermanager</p></b>
</font>
<pre>la clase drivermanager permite gestionar todos los drivers instalados en el
sistema.
<b>
<font size="3">
m�Todo:
<br>
<p>getconnection():</p></b>
</font>
utilizado para realizar la conexi�n a la base de datos para as� poder utilizarla.
<br>
<br>
<b><p><u>ejemplo de su uso:</p></u></b>
<font color="red">
connection con = drivermanager.getconnection(�url�, "mylogin", "mypassword");
</font>
como se puede observar el m�todo getconnection utiliza tres par�metros los cuales
son:
<ul>
<li type="circle">la direcci�n url</li>
<li type="circle">el nombre del usuario</li>
<li type="circle">el password del usuario</li>
</ul>
la direcci�n url es una sentencia de caracteres que nos dir� donde se encuentra
ubicada
la base de datos, la cual nos da un puente para poder as� acceder a ella. �sta
secuencia
de caracteres estar� determinada por el tipo de fuente de datos que utilicemos por
ejemplo
si utilizamos la fuente de datos odbc o si utilizamos jdbc, debemos averiguar la
sintaxis
correcta para tener as� nuestra direcci�n url.
<b>login: </b>el nombre del usuario (nombre que se utilizar� para establecer la
conexi�n.
<br>
<b>password: </b>es la password con la que el usuario acceder� a la base de datos.
<font color="red">
string dirurl = "jdbc:odbc:fred";
string nombre = �eric�;
string contrase�a= �123456�;
connection con = drivermanager.getconnection(url, nombre, contrase�a);
</font>
<b>nota: </b>n�tese que tanto la direcci�n url, login y password pueden definirse
con otros
nombres ya que solo son conjuntos de caracteres requeridos para establecer la
conexi�n a la
base de datos.
si uno de los drivers que hemos cargado reconoce la url suministada por el m�todo
drivermanager.getconnection,dicho driver establecer� una conexi�n con el
controlador de
base de datos especificado en la url del jdbc.
<font size="3">
<b><p>creaci�N y ejecuci�N de la sentencia:</p></b>
</font>
en jdbc existen dos formas principales de ejecutar y crear sentencias sql, la
primera es
usando un statement, y la segunda es creando un preparedstatement.
<font size="3">
<b><p>clase connection:</p></b>
</font>
representa la conexi�n con la base de datos. es el objeto que permite realizar las
consultas
sql y obtener los resultados de dichas consultas. es el objeto base para la
creaci�n de los
objetos de acceso a la base de datos.
<font size="3">
<b><p>m�todo createstatement():</p></b>
</font>
fue la primera manera de enviar sentencias sql usando java, este m�todo est� cada
vez m�s en
desuso, ya que no protege ante la inyecci�n de c�digo sql.
<font color="red">
statement stmt = con.createstatement();
string condicion="nombre='"+nombredelaweb+"' and
pass='"+passdelaweb+"'";
//creamos la sentencia sql
string sqlselect =
"select * from tabla where "+condicion;
//ejecutamos la sentencia sql
stmt.executequery(sqlselect);
</font>
<b>nota: </b> observes que si passdelawebes = �' or '1'='1 � tendr�amos una un
fallo en la
seguridad de la aplicaci�n ya que tendr�a acceso sin saber la contrase�a.
<font size="3">
<b><p>clase statement:</p></b>
</font>
�sta clase utiliza diferentes m�todos los cuales permiten ejecutar diferentes
sentencias sql
simples, aquellas sentencias que no necesitan par�metros, utilizadas para las
consulta de base
de datos.
<font size="3">
<b><p>m�todo executequery();</p></b>
</font>
se utiliza para ejecutar consultas sql de tipo select devolviendo como resultado
un conjunto
de registros de un objeto de la clase resultset.
<u><b>ejemplo:</b></u>
<font color="red">
statement s = conn.createstatement ();
s.executequery ("select ced, nombre, edad from estudiante");
resultset rs = s.getresultset ();
</font>
<font size="3">
<u><b><p>clase preparedstatement();</p></b></u>
</font>
es otra forma de crear sentencias sql, esta forma evita la inyecci�n y si la
sentencia es m�s
larga se entiende mejor.
<font color="red">
//creamos la sentencia sql
string sqlselect = "select * from tabla where nombre=? and pass=?";
//ejecutamos la sentencia sql
preparedstatement ps = con.createpreparedstatement(sqlselect);
ps.setstring(1,nombredelaweb);
ps.setstring(2,passdelaweb);
ps.executequery();
</font>
c�Digo:</b>
<font color="red">
resultset rs = s.getresultset ();
</font>
como se muestra en �ste segmento de c�digo, cada vez que ejecutamos una sentencia
select
tanto el statement como el preparedstatement al hacer el executequery() nos
devuelve un
objeto de tipo resultset, este objeto como se puede adivinar por el nombre es un
set, por
lo tanto es iterable.
<font size="3">
<u><b><p>interfaz resultset</p></b></u>
</font>
la interfaz resultset proporciona acceso a una tabla de datos. un objeto resultset
normalmente
se genera ejecutando una sentencia.
un objeto resultset mantiene un cursor apuntando hacia su fila de datos actual.
inicialmente,
el cursor est� colocado delante de la primera fila. el m�todo next() mueve el
cursor a la fila
siguiente.
los m�todos getxxx recuperan valores de columna para la fila actual. puede
recuperar valores
utilizando el n�mero de �ndice de la columna o el nombre de la columna. en
general, la
utilizaci�n del �ndice de columnas es m�s eficaz. las columnas se numeran a partir
de uno.
a continuaci�n se muestra un programa que ase una conexi�n con una base de datos
junto con
su explicaci�n:
as� se conecta java al driver jdbc de mysql
<font color="red">
import java.sql.*;
</font>
1-la clase publica de conexi�n mysql
<font color="red">
public class conectamysql
{
</font>
2- main del programa
<font color="red">
public static void main (string[] args)
{
</font>
3- v�ase el paso 5
<font color="red">
connection conn = null;
</font>
4- una vez conectada al servidor mysql ya podemos darle el nombre del usuario y la
contrase�a
requerida por el programa eso se hace de la siguiente manera:
<font color="red">
try
{
string username = "root";
string password = "";
</font>
5- este es la forma que tiene java de abrir la base de datos donde
<font color="red">
string url = "jdbc:mysql://localhost/prueba";
</font>
localhost: hace referencia que estamos conectado a una base de dato local pero
tambi�n podemos
conectarnos @156.35.94.6:1521 haciendo referencia al servidor y al
puesto que en
este caso es 1521.
prueba: esto ase referencia al nombre de la base de datos.
</body>
</html>