Conexión JAVA JDBC – ODBC
Ejemplo práctico de una conexión a una Base de Datos desde Java usando JDBC-ODBC. Te mostramos dos Ejemplos, uno para Consultar Datos y el otro para Insertar.
Ejemplo 1: Consulta a la Base de Datos
1. Vamos a crear una Clase llamada “JdbcEjem1” la cual tendría la siguientes estructura:
public class JdbcEjem1 {
public JdbcEjem1() { }
public static void main(String[] args) {
}
}
2. Debemos importar la siguiete librería:
import java.sql.*;
3. Dentro del método main vamos a declarer las sigiuentes variables:
Connection con;
Statement sentencia;
4. Seguidamente vamos a cargar el Driver usando las siguientes sentencias:
try{
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”);
}
catch(Exception e)
{
System.out.println(”No se ha cargado Driver JDBC-ODBC”);
}
5. Para realizar la conexión a la Base de datos se lo realiza de la siguiente manera:
con = DriverManager.getConnection(”jdbc:odbc:odbcEjem”, “”, “”);
notemos que el método getConnection() recibe tres argumentos, el primero es el que indica el URL de conexión que para nuestro caso es jdbc:odbc y seguido de ello escribimos el nombre del Origen de Datos que hemos creado para nuestro ejemplo “odbcEjem”, que es la base de datos a la cual nos vamos a conectar.
Los otros dos argumentos son el nombre de Usuario y Pasword respectivamente, en caso de que existieran, caso contrario irían vacíos como en este ejemplo.
6. Para ejecutar una sentencia se debe instanciar la variable de tipo Statement de la siguiente manera:
sentencia = con.createStatement();
7. Una vez instanciada la variable, podemos ejecutar una consulta, así:
String sql=”select * from alumno;”;
ResultSet result=sentencia.executeQuery(sql);
8. Y para mostrar los datos que devuelve la ejecución de la consulta utilizamos lo siguiente:
while(result.next()) {
System.out.print (”\n”+ result.getString(1) + “ ” +result.getString(2)+ “ ” +result.getString(3));
}
lo que hace es ejecutar un bucle mientras exista un resultado que mostrar, para mostrar la columna 1 del resultado producido al ejecutar la consulta se hace uso de: result.getString(1) y así mismo con el resto de columnas., como se puede observar en las líneas de código anterior.
9. Se cierra la conexión a la Base de Datos usando: con.close();
10. El código finalmente quedaría de la siguiente manera:
import java.sql.*;
public class JdbcEjem1 {
public JdbcEjem1() { }
public static void main(String[] args) {
Connection con;
Statement sentencia;
try{
//cargar el Driver
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”);
}
catch(Exception e)
{
System.out.println(”No se ha cargado Driver JDBC-ODBC”);
}
try{
//establecer la conexion
con = DriverManager.getConnection(”jdbc:odbc:OdbcEjem”, “”, “”);
//para ejecutar una sentencia de consulta:
sentencia = con.createStatement();
String sql=”select * from alumno;”;
ResultSet result=sentencia.executeQuery(sql);
//para mostrar el resultado de la consulta
while(result.next()) {
System.out.print (”\n”+ result.getString(1) + “ ” +result.getString(2)+ “ ” +result.getString(3));
}
//para cerrar la conexion
con.close();
}
catch(Exception e)
{
System.out.println(”conexion no establecida”);
}
}
}
Ejemplo 2: Insertar Datos
1. Se deben seguir los pasos del 1 al 6 solamente que a esta clase la llamaremos JdbcEjem2
2. Para insertar los datos habría que hacer uso de la siguiente sentencia:
String sql=”insert into alumno(cedula,nombre,edad,nivel) values(1704,’Laura’,23,’cuarto’);”;
sentencia.executeUpdate(sql);
notar que a diferencia del ejemplo 1 en esta ocación se hace uso del método: executeUpdate() ya que este es el método usado para eliminar, actualizar e insertar datos.
3. El código finalmente quedaría de la siguiente manera:
import java.sql.*;
public class JdbcEjem2 {
public JdbcEjem2() {
}
public static void main(String[] args) {
Connection con;
Statement sentencia;
try{
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”);
}
catch(Exception e)
{
System.out.println(”No se ha cargado Driver JDBC-ODBC”);
}
try{
con = DriverManager.getConnection(”jdbc:odbc:OdbcEjem”, “”, “”);
sentencia = con.createStatement();
String sql=”insert into alumno(cedula,nombre,edad,nivel) values(1704,’Laura’,23,’cuarto’);”;
sentencia.executeUpdate(sql);
con.close();
}
catch(Exception e)
{
System.out.println(”conexion no establecida”);
}
}
}
12 de April, 2007 - 12:10
Voy a probar este codigo gracias
28 de June, 2007 - 17:12
necesito un ejemplo de eliminacion, les agradeceria me ayudaran
29 de June, 2007 - 14:39
para eliminar debes hacer lo mismo que para insertar o actualizar datos, solamente debes escribir la sentencia SQL de eliminacion, por ejemplo:
delete NombreTabla where campo=’algo’
el codigo seria algo parecido a esto:
try{
con = DriverManager.getConnection(”jdbc:odbc:OdbcEjem”, “”, “”);
sentencia = con.createStatement();
String sql=”delete alumno where edad=23″;
sentencia.executeUpdate(sql);
con.close();
}
catch(Exception e)
{
System.out.println(”conexion no establecida”);
}
20 de August, 2007 - 10:37
neceito realizar una base de datos en donde consulte modifique y elimine los datos ….como hago para bajar el controlador JDBC-ODBC la aplicacion a usar es access 2003. Gracias
20 de August, 2007 - 11:31
Para crear una conexion ODBC debes hacer:
- en el “Panel de control”->HerramientasAdministrativas->“Origenes de datos ODBC”
- Selecciona “DNS del Sistema”
- Pulsa el Boton “Agregar”
- del listado que aparece busca: “Microsoft Access Driver(mdb)”
- ponle un nombre a tu origen de datos, por Ejemplo: “odbcEjemp”, que es la que usamos en el ejemplo del Blog.
- Pulsa el Boton “Seleccionar”, busca tu base de datos en Access y ya tienes lista la conexion ODBC.
El driver JDBC-ODBC ya viene con el JDK que estes usando.
21 de August, 2007 - 14:25
gracias estuve cacharriando en el pcy encontre el ODBC
31 de October, 2007 - 14:47
como eliminar datos de la clase notebook del metodo public int numberOfNotes()
{
return notes.size();
}
31 de October, 2007 - 15:13
no esta muy claro lo que solicitas, si puedes ser un poco mas especifico te podria ayudar
17 de December, 2007 - 13:24
hola, yo tengo el siguiente codigo para insertar en mi bd:
public void ingresar_horas(){
int horas=0;
this.conectabd();
try{
String sqlstring = “INSERT INTO presupuesto(Horas_Anuales_Presupuestadas)VALUES(’”+horas+”‘)”;
stt.executeUpdate(sqlstring);
stt.close();}
catch(Exception e){
System.out.println(e);
}
}
y por otro lado tengo un .java que llama esta funcion asi:
public int Log_Horas(){
int resp;
resp=this.connect.ingresar_horas(); //aqui me da el error
}
ayuda por favor soy novata programando, me da error y no tengo ni idea como solucionarlo
18 de December, 2007 - 14:33
Seria bueno que indiques como te estas conectando a la Base de Datos o que nos escribas el mensaje de error que te sale al ejecutar.
De lo que me puedo dar cuenta es que envias el valor de la variable “horas”, si tu dato en la base de datos es un dato numerico, no debes enviar con las apóstrofes, solamente debes poner:
(”+horas+”)”;
20 de December, 2007 - 8:40
Gracias por tu consejo, pero no me da error ya, solo que el dato no se inserta en la bd, alli va el codigo de donde hago la conexion:
public boolean conectabd(){
boolean resp=false;
try{
Class.forName(”org.gjt.mm.mysql.Driver”).newInstance();
con=DriverManager.getConnection(”jdbc:mysql://localhost:3306/bdadvisory”,”root”,”16299120″);
resp=true;
}catch(Exception e){
System.out.println(”No se puede realizar la conexión”);
System.out.println(e);
}
return resp;
}
luego en esta funcion que esta en la misma clase:
public void ingresar_horas(String horas){
this.conectabd();
try{
String sqlstring = “INSERT INTO presupuesto(Horas_Anuales_Presupuestadas)VALUES(”+horas+”)”;
stt.executeUpdate(sqlstring);
stt.close();}
catch(Exception e){
System.out.println(e);
}
}
y esto lo llamo desde la pagina jsp asi:
String horas=request.getParameter(”horas”);
conexionbd.ingresar_horas(horas);
los datos son pasados a un post pero no se insertan en la bd, porfa si ves mi error hazmelo saber lo antes posible, muchisimas gracias de antemano!
21 de December, 2007 - 9:18
Dentro de tu metodo que inserta pon un System.out.println(sqlsring), copia la linea que te sale y ejecutala directamente en tu base de datos, puede ser que estes armando mal la cadena de insertar; intenta con:
public void ingresar_horas(String horas){
this.conectabd();
try{
String sqlstring = “INSERT INTO presupuesto(Horas_Anuales_Presupuestadas)VALUES(’”+horas+”’)”;
stt.executeUpdate(sqlstring);
stt.close();}
catch(Exception e){
System.out.println(e);
}
}
2 de January, 2008 - 9:38
Hola Feliz Año Nuevo!! gracias ya me funciono esa parte, pero yo sigo con mis problemas en consultas a base de datos, en este caso necesito hacer una consulta y que los valores que me traiga dicha consulta se guarden en un arreglo, no me da error pero simplemente no logro hacerlo, soy nueva en esto de programar y no se si estoy haciendo algo mal…alli te va mi codigo:
public int[] obtener_porcentaje_mensbd(){
int porc_mens[]=new int[12];
int i=0;
this.conectabd();
try{
stt=con.createStatement();
String sqlstring = “select * from cargabilidad_mensual”;
rset=stt.executeQuery(sqlstring);
while(rset.next()){
porc_mens[i]= rset.getInt(”porcentaje”);
i++;
}
JOptionPane.showMessageDialog(null, porc_mens, “le esta llegando”, JOptionPane.WARNING_MESSAGE);
System.out.println(porc_mens[i]);
rset.close();
stt.close();
}
catch(Exception e){
System.out.println(e);
}
return porc_mens;
}
en donde mando a imprimir el mensaje llegan unos caracteres extraños, espero puedas ayudarme ya que no veo donde me equivoco..gracias de antemano
4 de January, 2008 - 12:09
Hola Evelyn parece ser que tu estas imprimiendo un valor del arreglo que está fuera del índice, reemplaza la línea:
System.out.println(porc_mens[i]);
por lo siguiente:
for(k=0;k<porc_mens.length;k++){
System.out.println(porc_mens[k]);
}
12 de January, 2008 - 11:11
Hola tengo un problema
Estoy haciendo una aplicaion en la que llamo informacion de una base de datos de sql de la siguiente forma
public class tablaproductos extends AbstractTableModel{ /* Herencia de la clase table*/
private int columna=4;
private int rownum=10;
private String[] Nombrecolumnas={
“DESCRIPCION”,”PRECIO”, “ISV”,”EXISTENCIA”
};
private ArrayList ResultSets;
public tablaproductos(java.sql.ResultSet rs) {
ResultSets=new ArrayList();
try{
while(rs.next()){
String[] row={
rs.getString(”Description”),rs.getString(”Price”),rs.getString(”TaxID”),rs.getString(”Quantity”)
};
ResultSets.add(row);
}
}
catch(Exception e){
System.out.println(”Excepcion en la tabla”);
}
}
este funciona pero al agregar un valor de tipo entero no me lo hace me manda una excepcion. si alguien puede ayudarme se lo agradeceria mucho.
26 de January, 2008 - 13:25
Al parecer estas enviando un String al lo que usas getString(”Price”); tu resulset.add es posible que solo trabaje con String; necesitaria ver el codigo de tu resulset
27 de September, 2008 - 0:08
hola k tal estaba investigando esto de la conexion de acces y java y me preguntaba si con solo agregar el dns y el nombre de la base de datos y correr los prog de estan aky ya sale o me falta algo mas…………………………………………………………………………………………………..?
28 de September, 2008 - 7:58
Debes crear una conexion ODBC a tu base de datos ACCESS, el nombre de tu ODBC debes ponerlo en la cadena de conexion, por ejemplo en este caso hemos llamado a la conexion ODBC objEjem, así: con = DriverManager.getConnection(”jdbc:odbc:odbcEjem”, “”, “”);……………………..
Lo importante es que crees tu conexion ODBC, esto si lo estas usando desde WINDOWS. Para ello tienes que ir a Panel De Control -> Herramientas administrativas -> Origenes de Datos ODBC y agragar la conexion a tu Base de datos.
Con esto ya te deberia funcionar.
26 de July, 2010 - 4:25
http://auto-lubiteli.ru/chto-dumaete-avtomobile-vaz-2114-stoit-brat-t8-460.html…
…