Classes
Introduccion a los conceptos orientados a objetos en este ejemplo titulado Programacion Orientada a objetos se utilizan los conceptos usados en la clase bicicleta como ejemplo, se puede utilizar la clase para declarar subclases: bicicletas de carreras, bicicletas montañas,etc, como subclases. Aqui esta el codigo para una posible implementacion de la clase Bicicleta, para darte un vistazo de la declaracion de la clase.
Subsecuentemente las secciones de este ejemplo te explicaran los pasos para hacer las declaraciones de clases. Por el momento, no entraré en mas detalles...
package Transportes;
/**
*
* @author mtrejo
*/
public class Bicicleta {
// La clase Bicicleta tiene tres campos....
public int cadencia;
public int Engrane;
public int velocidad;
// La clase Bicicleta tiene un constructor....
public Bicicleta(int iniciarCadencia, int iniciarVelocidad, int iniciarEngrane) {
Engrane = iniciarEngrane;
cadencia = iniciarCadencia;
velocidad = iniciarVelocidad;
}
// La clase Bicicleta tiene cuatro metodos....
public void setcadencia(int nuevoValor) {
cadencia = nuevoValor;
}
public void setEngrane(int nuevoValor) {
Engrane = nuevoValor;
}
public void aplicarFreno(int decrementar) {
velocidad -= decrementar;
}
public void AumentarVelocidad(int incrementar) {
velocidad += incrementar;
}
}
Una declaracion de clase para BicicletaMontaña como subclase de Bicicleta se haría de la siguiente manera:
package Transportes;
/**
*
* @author mtrejo
*/
public class BicicletaMontaña extends Bicicleta {
//La subclase BicicletaMontaña tiene un campothe...
public int seatAltura;
//La subclase BicicletaMontaña tiene un constructor...
public BicicletaMontaña(int iniciarAltura, int iniciarCadencia, int iniciarVelocidad, int iniciarEngrane) {
super(iniciarCadencia, iniciarVelocidad, iniciarEngrane);
seatAltura = iniciarAltura;
}
//La subclase BicicletaMontaña tiene un metodo...
public void setAltura(int nuevoValor) {
seatAltura = nuevoValor;
}
}
BicicletaMontaña hereda todos los campos y metodos de Bicicleta y agrea el campo seatAltura y el metodo para manejarlo ( la bicicleta montaña se movera hacia arriba y hacia abajo como el terreno lo demande)....
Has visto que las clases se definen de la siguiente manera
class MiClase {
//campo, constructor y declaraciones del metodo
}
Esta es la declaracion de una clase. El cuerpo de la clase (area entre el signo de llaves) contiene todo el codigo que se le da para el ciclo de vida a los objetos creados de la clase: constructores para inicializar nuevos objetos, declaraciones, para los campos que proveen el estado de la clase y sus objetos, y metodos para impleemntar la conducta de la clase y sus objetos.
The preceding class declaration is a minimal one—it contains only those components of a class declaration that are required. You can provide more information about the class, such as the name of its superclass, whether it implements any interfaces, and so on, at the start of the class declaration. For example,
La precedencia a la declaracion de la clase es minima, solo contiene aquellos componentes de la declaracion de la clase que son requeridos. Puedes proveer mas informacion acerca de la clase, com oel nombre de su superclase,
class MyClass extends MySuperClass implements YourInterface {
//field, constructor, and method declarations
}
Continuara.....
jueves, 18 de diciembre de 2008
miércoles, 10 de diciembre de 2008
INICIOS EN ORACLE
Hola toda la comunidad de desarrolladores
Aqui dejo algunos ejemplos de los primeros pasos en el aprendizaje de ORACLE
para referencia de quien quiera hacer tablas y manejar procedimientos
######################################################
Oracle PL/SQL
######################################################
Crear Tablas
######################################################
CREATE TABLE estudiantes (
id NUMBER(5) PRIMARY KEY,
nombre CHAR(29),
apellido CHAR(29)
especialidad CHAR(29),
creditos NUMBER
);
CREATE TABLE aulas (
idaula NUMBER(5) PRIMARY KEY,
edificio CHAR(15),
numeroaula NUMBER,
numeroasientos NUMBER,
descripcionaula CHAR(50)
);
CREATE TABLE especialidades (
especialidades CHAR(3),
totalcreditos NUMBER,
totalestudiantes NUMBER
);
CREATE TABLE cursos(
departamento CHAR(3),
ncurso NUMBER,
descripcioncurso CHAR(200),
cupoestudiantes NUMBER,
nestudiantes NUMBER,
ncreditos NUMBER,
idaula NUMBER,
CONSTRAINT cursos_departamento_ncurso
PRIMARY KEY(departamento, ncurso),
CONSTRAINT cursos_idaula
FOREIGN KEY(idaula) REFERENCES aulas (idaula)
);
CREATE TABLE estudios(
idestudiante NUMBER NOT NULL,
departamento CHAR(3) NOT NULL,
Ncurso NUMBER NOT NULL,
grado CHAR(1),
CONSTRAINT estudios_grado
CHECK(grado IN('A','B','C','D','E')),
CONSTRAINT estudios_idestudiante
FOREIGN KEY(idestudiante) REFERENCES estudiantes (id),
CONSTRAINT estudios_departamento_ncurso
FOREIGN KEY (departamento, ncurso) REFERENCES cursos (departamento, ncurso)
);
CREATE TABLE cambios(
tipo CHAR(1) NOT NULL,
razon VARCHAR(8) NOT NULL,
fecha DATE NOT NULL,
antiguoestudiante NUMBER(5),
antiguodepartamento CHAR(3),
antiguoncurso NUMBER(3),
antiguogrado CHAR(1),
nuevoidestudiante NUMBER(3),
nuevodepartamento CHAR(3),
nuevoncurso NUMBER(3),
nuevogrado CHAR(1)
);
CREATE TABLE errores(
codigo NUMBER,
mensaje VARCHAR(200),
informacion VARCHAR(100)
);
CREATE TABLE temporal(
columnanumerica NUMBER,
columnacaracter VARCHAR(100)
);
CREATE TABLE debug(
nlinea NUMBER,
texto VARCHAR2(100)
);
CREATE SEQUENCE secuencia
START WITH 10000
INCREMENT BY 1;
INSERT INTO estudiantes VALUES(1, 'Scott', 'Smith', 'Computer Science', 0);
INSERT INTO estudiantes VALUES(2, 'Margaret', 'Mason', 'History', 0);
INSERT INTO estudiantes VALUES(3, 'Joane', 'Junebug', 'Computer Science', 0);
INSERT INTO estudiantes VALUES(4, 'Manish', 'Mugratroid', 'Economics', 0);
INSERT INTO estudiantes VALUES(5, 'Patrick', 'Poll', 'History', 0);
INSERT INTO estudiantes VALUES(6, 'Timothy', 'Taller', 'History', 0);
INSERT INTO estudiantes VALUES(7, 'Barbara', 'Blue', 'Economics', 0);
INSERT INTO estudiantes VALUES(8, 'David', 'Dinsmore', 'Music', 0);
INSERT INTO estudiantes VALUES(9, 'Ester', 'Elegant', 'Nutrition', 0);
INSERT INTO estudiantes VALUES(10, 'Rosy', 'Riznit', 'Music', 0);
INSERT INTO estudiantes VALUES(11, 'Rita', 'Razmataz', 'Nutrition', 0);
INSERT INTO aulas VALUES(99999, 'Building 7', 310, 1000, 'Large Lecture Hall');
INSERT INTO aulas VALUES(99998, 'Building 6', 101, 500, 'Small LEcture Hall');
INSERT INTO aulas VALUES(99997, 'Building 6', 150,50, 'Discussion Room A');
INSERT INTO aulas VALUES(99996, 'Building 6', 160,50, 'Discussion Room B');
INSERT INTO aulas VALUES(99995, 'Building 6', 179,50, 'Discussion Room C');
INSERT INTO aulas VALUES(99994, 'Music Building', 100, 10, 'Music Practice Room');
INSERT INTO aulas VALUES(99993, 'Music Building', 200, 1000, 'Concert Room');
INSERT INTO aulas VALUES(99992, 'Building 7', 300, 75, 'Discussion Room D');
INSERT INTO aulas VALUES(99991, 'Building 7', 300, 50, 'Discussion Room E');
######################################################
UPDATE
######################################################
UPDATE CURSOS
SET DEPARTAMENTO='CS' WHERE departamento='cS'
######################################################
PROCEDIMIENTOS
######################################################
CREATE OR REPLACE PROCEDURE AñadeNuevoEstudiante(
p_Nombre estudiantes.nombre%TYPE,
p_Apellido estudiantes.apellido%TYPE,
p_Especialidad estudiantes.especialidad%TYPE) AS
BEGIN
--Inserta una nueva fila en la tabla estudiantes
--Usa secuencia para generar un nuevo ID estudiante
--y asigna el valor cero a creditos
INSERT INTO estudiantes(ID, nombre, apellido, especialidad, creditos)
VALUES(secuencia.nextval, p_Nombre, p_Apellido, p_Especialidad, 0);
COMMIT;
END AñadeNuevoEstudiante;
/
######################################################
Invocar Procedimiento
######################################################
BEGIN
AñadeNuevoEstudiante('David','Lewis','Music');
END;
/
######################################################
CADENAS
SUBSTRAER UNA CADENA
######################################################
SELECT SUBSTR('0000000000'||'123456',1,15) "Subcad" FROM DUAL;
REGRESA del :
Subcad
------------
'000000000012345'
Seguire Agregando mas...
http://sqleficiente.wordpress.com/
"Cual quier reto por dificil que sea, si se puede lograr, si realmente lo intentamos"
Saludos!!
Marco
:D
Aqui dejo algunos ejemplos de los primeros pasos en el aprendizaje de ORACLE
para referencia de quien quiera hacer tablas y manejar procedimientos
######################################################
Oracle PL/SQL
######################################################
Crear Tablas
######################################################
CREATE TABLE estudiantes (
id NUMBER(5) PRIMARY KEY,
nombre CHAR(29),
apellido CHAR(29)
especialidad CHAR(29),
creditos NUMBER
);
CREATE TABLE aulas (
idaula NUMBER(5) PRIMARY KEY,
edificio CHAR(15),
numeroaula NUMBER,
numeroasientos NUMBER,
descripcionaula CHAR(50)
);
CREATE TABLE especialidades (
especialidades CHAR(3),
totalcreditos NUMBER,
totalestudiantes NUMBER
);
CREATE TABLE cursos(
departamento CHAR(3),
ncurso NUMBER,
descripcioncurso CHAR(200),
cupoestudiantes NUMBER,
nestudiantes NUMBER,
ncreditos NUMBER,
idaula NUMBER,
CONSTRAINT cursos_departamento_ncurso
PRIMARY KEY(departamento, ncurso),
CONSTRAINT cursos_idaula
FOREIGN KEY(idaula) REFERENCES aulas (idaula)
);
CREATE TABLE estudios(
idestudiante NUMBER NOT NULL,
departamento CHAR(3) NOT NULL,
Ncurso NUMBER NOT NULL,
grado CHAR(1),
CONSTRAINT estudios_grado
CHECK(grado IN('A','B','C','D','E')),
CONSTRAINT estudios_idestudiante
FOREIGN KEY(idestudiante) REFERENCES estudiantes (id),
CONSTRAINT estudios_departamento_ncurso
FOREIGN KEY (departamento, ncurso) REFERENCES cursos (departamento, ncurso)
);
CREATE TABLE cambios(
tipo CHAR(1) NOT NULL,
razon VARCHAR(8) NOT NULL,
fecha DATE NOT NULL,
antiguoestudiante NUMBER(5),
antiguodepartamento CHAR(3),
antiguoncurso NUMBER(3),
antiguogrado CHAR(1),
nuevoidestudiante NUMBER(3),
nuevodepartamento CHAR(3),
nuevoncurso NUMBER(3),
nuevogrado CHAR(1)
);
CREATE TABLE errores(
codigo NUMBER,
mensaje VARCHAR(200),
informacion VARCHAR(100)
);
CREATE TABLE temporal(
columnanumerica NUMBER,
columnacaracter VARCHAR(100)
);
CREATE TABLE debug(
nlinea NUMBER,
texto VARCHAR2(100)
);
CREATE SEQUENCE secuencia
START WITH 10000
INCREMENT BY 1;
INSERT INTO estudiantes VALUES(1, 'Scott', 'Smith', 'Computer Science', 0);
INSERT INTO estudiantes VALUES(2, 'Margaret', 'Mason', 'History', 0);
INSERT INTO estudiantes VALUES(3, 'Joane', 'Junebug', 'Computer Science', 0);
INSERT INTO estudiantes VALUES(4, 'Manish', 'Mugratroid', 'Economics', 0);
INSERT INTO estudiantes VALUES(5, 'Patrick', 'Poll', 'History', 0);
INSERT INTO estudiantes VALUES(6, 'Timothy', 'Taller', 'History', 0);
INSERT INTO estudiantes VALUES(7, 'Barbara', 'Blue', 'Economics', 0);
INSERT INTO estudiantes VALUES(8, 'David', 'Dinsmore', 'Music', 0);
INSERT INTO estudiantes VALUES(9, 'Ester', 'Elegant', 'Nutrition', 0);
INSERT INTO estudiantes VALUES(10, 'Rosy', 'Riznit', 'Music', 0);
INSERT INTO estudiantes VALUES(11, 'Rita', 'Razmataz', 'Nutrition', 0);
INSERT INTO aulas VALUES(99999, 'Building 7', 310, 1000, 'Large Lecture Hall');
INSERT INTO aulas VALUES(99998, 'Building 6', 101, 500, 'Small LEcture Hall');
INSERT INTO aulas VALUES(99997, 'Building 6', 150,50, 'Discussion Room A');
INSERT INTO aulas VALUES(99996, 'Building 6', 160,50, 'Discussion Room B');
INSERT INTO aulas VALUES(99995, 'Building 6', 179,50, 'Discussion Room C');
INSERT INTO aulas VALUES(99994, 'Music Building', 100, 10, 'Music Practice Room');
INSERT INTO aulas VALUES(99993, 'Music Building', 200, 1000, 'Concert Room');
INSERT INTO aulas VALUES(99992, 'Building 7', 300, 75, 'Discussion Room D');
INSERT INTO aulas VALUES(99991, 'Building 7', 300, 50, 'Discussion Room E');
######################################################
UPDATE
######################################################
UPDATE CURSOS
SET DEPARTAMENTO='CS' WHERE departamento='cS'
######################################################
PROCEDIMIENTOS
######################################################
CREATE OR REPLACE PROCEDURE AñadeNuevoEstudiante(
p_Nombre estudiantes.nombre%TYPE,
p_Apellido estudiantes.apellido%TYPE,
p_Especialidad estudiantes.especialidad%TYPE) AS
BEGIN
--Inserta una nueva fila en la tabla estudiantes
--Usa secuencia para generar un nuevo ID estudiante
--y asigna el valor cero a creditos
INSERT INTO estudiantes(ID, nombre, apellido, especialidad, creditos)
VALUES(secuencia.nextval, p_Nombre, p_Apellido, p_Especialidad, 0);
COMMIT;
END AñadeNuevoEstudiante;
/
######################################################
Invocar Procedimiento
######################################################
BEGIN
AñadeNuevoEstudiante('David','Lewis','Music');
END;
/
######################################################
CADENAS
SUBSTRAER UNA CADENA
######################################################
SELECT SUBSTR('0000000000'||'123456',1,15) "Subcad" FROM DUAL;
REGRESA del :
Subcad
------------
'000000000012345'
Seguire Agregando mas...
http://sqleficiente.wordpress.com/
"Cual quier reto por dificil que sea, si se puede lograr, si realmente lo intentamos"
Saludos!!
Marco
:D
Etiquetas:
cadena,
ejemplo,
Oracle,
procedimiento,
tabla
domingo, 10 de agosto de 2008
Acerca de mi...
Mi nombre es Marco. Nací en Tampico, Tamauilipas. Soy soltero, responsable, trabajador, deportista. Tengo tres hermanas: Elvira, Beatriz y Zulma todas mayores que yo.
Estudié ingenieria en sistemas computacionales en la Universidad Autonoma de Tamaulipas. Mientras estudiaba ingenieria, a partir del segundo semestre empecé a trabajar en el centro de computo de mi facutlad. Primero como auxiliar de computo y despues como coordinador, me relacione con muchos ingenieros, con quienes aprendí bastante. Siguieron los semestres y continue alternando el estudio con el trabajo cada vez que podia.
Luego de terminar mi carrera, forme parte del mercado laboral, trabajando arduamente me fui habriendo camino en diferentes ramas de la ingenieria, Telecomunicaciones y mantenimiento preventivo, como les conocen otros. Allí se me metió la idea de capacitarme mas y me anime a estudiar una Maestria en Sistemas de Informacion, asi se pasaron 2 años de estudiar y trabajar, segui capacitandome por mi cuenta en desarrollo. No solo aprendí a programar en java sino que también aprendí todo el proceso de desarrollo de un sistema Mediante libros que yo mismo me compraba.
Después de año y medio me fuí a Monterrey para tener un mejor ingreso pero terminé trabajando en el Qualitypost Monterrety Matriz de un de mis antiguos empleos,Desarrollando el programa “Webservices” en el depto de Tecnologia. . Estuve unos meses, prácticamente trabajando duro y aguantando ahi porque me pagaban poco pero la experiencia fue invalorable, ahora soy analista programador y sigo en mi travesia por estos rumbos, Cd. Monterrey ha sido un sueño para mi, por las oportunidades que hay para un ingeniero en sistemas para progresar...
Un sueño del cual no quiero despertar....
"Cual quier reto por dificil que sea, si se puede lograr, si realmente lo intentamos"
Marco
Estudié ingenieria en sistemas computacionales en la Universidad Autonoma de Tamaulipas. Mientras estudiaba ingenieria, a partir del segundo semestre empecé a trabajar en el centro de computo de mi facutlad. Primero como auxiliar de computo y despues como coordinador, me relacione con muchos ingenieros, con quienes aprendí bastante. Siguieron los semestres y continue alternando el estudio con el trabajo cada vez que podia.
Luego de terminar mi carrera, forme parte del mercado laboral, trabajando arduamente me fui habriendo camino en diferentes ramas de la ingenieria, Telecomunicaciones y mantenimiento preventivo, como les conocen otros. Allí se me metió la idea de capacitarme mas y me anime a estudiar una Maestria en Sistemas de Informacion, asi se pasaron 2 años de estudiar y trabajar, segui capacitandome por mi cuenta en desarrollo. No solo aprendí a programar en java sino que también aprendí todo el proceso de desarrollo de un sistema Mediante libros que yo mismo me compraba.
Después de año y medio me fuí a Monterrey para tener un mejor ingreso pero terminé trabajando en el Qualitypost Monterrety Matriz de un de mis antiguos empleos,Desarrollando el programa “Webservices” en el depto de Tecnologia. . Estuve unos meses, prácticamente trabajando duro y aguantando ahi porque me pagaban poco pero la experiencia fue invalorable, ahora soy analista programador y sigo en mi travesia por estos rumbos, Cd. Monterrey ha sido un sueño para mi, por las oportunidades que hay para un ingeniero en sistemas para progresar...
Un sueño del cual no quiero despertar....
"Cual quier reto por dificil que sea, si se puede lograr, si realmente lo intentamos"
Marco
lunes, 30 de junio de 2008
Como fusionar datos de varias tablas : INNER JOIN
La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: interno, externo, y cruzado.
En casos especiales una tabla puede unirse a sí misma, produciendo una auto-combinación, SELF-JOIN.
Matemáticamente, JOIN es composición relacional, la operación fundamental en el álgebra relacional,y generalizando es una función de composición
Combinación interna (INNER JOIN) Con esta operación es calculado el producto cruzado de todos los registros; así cada registro en la tabla A es combinado con cada registro de la tabla B; pero sólo permanecen aquellos registros en la tabla combinada que satisfacen las condiciones que se especifiquen. Este es el tipo de JOIN más utilizado por lo que es considerado el tipo de combinación predeterminado.
SQL:2003 especifica dos formas diferentes para expresar estas combinaciones. La primera, conocida como explícita usa la palabra JOIN, mientras que la segunda es implícita y usa ',' para separar las tablas a combinar en la sentencia FROM de la declaración SELECT. Entonces siempre se genera el producto cruzado del cual se seleccionan las combinaciones que cumplan lo que indica la sentencia WHERE.
Es necesario tener especial cuidado cuando se combinan columnas con valores nulos NULL ya que el valor nulo no se combina con otro valor o con otro nulo, excepto cuando se le agregan predicados tales como IS NULL o IS NOT NULL.
Como ejemplo, la siguiente consulta toma todos los registros de la tabla Empleado y encuentra todas las combinaciones en la tabla Departamento. La sentencia JOIN compara los valores en la columna IDDepartamento en ambas tablas. Cuando no existe esta correspondencia entre algunas combinaciones, éstas no se muestran; es decir que si el número de departamento de un empleado no coincide con los números de departamento de la tabla Departamento, no se mostrará el empleado con su respectivo departamento en la tabla resultante.
Regresa una consulta combinando los datos de 2 tablas
A. INNER JOIN EXPLICITA
select [campo1,campo2]
from tabla1
inner join tabla2
on (tabla1.campo=tabla2.campo)
where tabla1.campox=dato1
and tabla1.campox=dato2
selecciona [campo1,campo2]
desde tabla1
ir dentro tabla2
en (tabla1.campo=tabla2.campo)
donde tabla1.campox=dato1
y tabla1.campox=dato2
B. INNER JOIN IMPLICITA
select tipo_trans, T010001a.codigo,T010001.cuenta
from T010001
inner join T010001a
on(T010001.codigo=T010001a.codigo)
where T010001.nremesa=72505
and T010001.nmensajeria=10
and T010001.cuenta='070123100125070001413'
A. Ejemplo de la sentencia INNER JOIN explícita:
SELECT *
FROM base
INNER JOIN bodega
ON base.IDbodega = bodega.IDbase
B. Ejemplo de la sentencia INNER JOIN implícita:
SELECT *
FROM empleado, departamento
WHERE empleado.IDdepartamento = departamento.IDDepartamento
Resultados:
El empleado Gaspar y el departamento de Marketing no son presentados en los resultados ya que ninguno de éstos tiene registros correspondientes en la otra tabla. No existe un departamento con número 36 ni existe un empleado con número de identificación 35
Enlaces:
http://es.wikipedia.org/wiki/JOIN#Combinaci.C3.B3n_interna_.28INNER_JOIN.29
En casos especiales una tabla puede unirse a sí misma, produciendo una auto-combinación, SELF-JOIN.
Matemáticamente, JOIN es composición relacional, la operación fundamental en el álgebra relacional,y generalizando es una función de composición
Combinación interna (INNER JOIN) Con esta operación es calculado el producto cruzado de todos los registros; así cada registro en la tabla A es combinado con cada registro de la tabla B; pero sólo permanecen aquellos registros en la tabla combinada que satisfacen las condiciones que se especifiquen. Este es el tipo de JOIN más utilizado por lo que es considerado el tipo de combinación predeterminado.
SQL:2003 especifica dos formas diferentes para expresar estas combinaciones. La primera, conocida como explícita usa la palabra JOIN, mientras que la segunda es implícita y usa ',' para separar las tablas a combinar en la sentencia FROM de la declaración SELECT. Entonces siempre se genera el producto cruzado del cual se seleccionan las combinaciones que cumplan lo que indica la sentencia WHERE.
Es necesario tener especial cuidado cuando se combinan columnas con valores nulos NULL ya que el valor nulo no se combina con otro valor o con otro nulo, excepto cuando se le agregan predicados tales como IS NULL o IS NOT NULL.
Como ejemplo, la siguiente consulta toma todos los registros de la tabla Empleado y encuentra todas las combinaciones en la tabla Departamento. La sentencia JOIN compara los valores en la columna IDDepartamento en ambas tablas. Cuando no existe esta correspondencia entre algunas combinaciones, éstas no se muestran; es decir que si el número de departamento de un empleado no coincide con los números de departamento de la tabla Departamento, no se mostrará el empleado con su respectivo departamento en la tabla resultante.
Regresa una consulta combinando los datos de 2 tablas
A. INNER JOIN EXPLICITA
select [campo1,campo2]
from tabla1
inner join tabla2
on (tabla1.campo=tabla2.campo)
where tabla1.campox=dato1
and tabla1.campox=dato2
selecciona [campo1,campo2]
desde tabla1
ir dentro tabla2
en (tabla1.campo=tabla2.campo)
donde tabla1.campox=dato1
y tabla1.campox=dato2
B. INNER JOIN IMPLICITA
select tipo_trans, T010001a.codigo,T010001.cuenta
from T010001
inner join T010001a
on(T010001.codigo=T010001a.codigo)
where T010001.nremesa=72505
and T010001.nmensajeria=10
and T010001.cuenta='070123100125070001413'
A. Ejemplo de la sentencia INNER JOIN explícita:
SELECT *
FROM base
INNER JOIN bodega
ON base.IDbodega = bodega.IDbase
B. Ejemplo de la sentencia INNER JOIN implícita:
SELECT *
FROM empleado, departamento
WHERE empleado.IDdepartamento = departamento.IDDepartamento
Resultados:
El empleado Gaspar y el departamento de Marketing no son presentados en los resultados ya que ninguno de éstos tiene registros correspondientes en la otra tabla. No existe un departamento con número 36 ni existe un empleado con número de identificación 35
Enlaces:
http://es.wikipedia.org/wiki/JOIN#Combinaci.C3.B3n_interna_.28INNER_JOIN.29
martes, 17 de junio de 2008
Clase generica de Conexion a Bases de datos
Una clase Generica de conexion a bases de datos
Una clase generica que realiza una conexion a bases de datos mysql, la cual esta declarada dentro del paquete conexion, recibe cuatro parametros:
String ip, String bd, String usr, String pass, los cuales se pueden enviar desde otra clase en donde se mande llamar... ejemplo
GenericaDb qpn = new GenericaDb("192.168.54.2","listadb","admin","4dm1n1str");
despues se puede acceder a los elementos de la clase de la siguiente forma:
//Para obtener la conexion
Connexion conexion = qpn.getConexion();
package conexion;
/****************************************
* *
* @author Marco A. Trejo Lemus *
* 17/06/2008 09:47:01 AM *
****************************************/
import java.sql.*;
public class GenericaDb
{
public String driver,url,ip,bd,usr,pass;
public Connection conexion;
public GenericaDb(String ip, String bd, String usr, String pass)
{ driver="com.mysql.jdbc.Driver";
this.bd = bd;
this.usr = usr;
this.pass = pass;
url = new String("jdbc:mysql://"+ip+"/"+bd);
try
{ Class.forName(driver).newInstance();
conexion=DriverManager.getConnection(url,usr,pass);
System.out.println("Conexion a Base de Datos "+bd+" Ok");
}
catch (Exception exc)
{ System.out.println("Error al tratar de abrir la base de Datos"+bd+" : "+exc);
}
}
public Connection getConexion()
{ return conexion;
}
public Connection CerrarConexion() throws SQLException
{ conexion.close(); conexion = null;
return conexion;
}
} //fin de la clase
Una clase generica que realiza una conexion a bases de datos mysql, la cual esta declarada dentro del paquete conexion, recibe cuatro parametros:
String ip, String bd, String usr, String pass, los cuales se pueden enviar desde otra clase en donde se mande llamar... ejemplo
GenericaDb qpn = new GenericaDb("192.168.54.2","listadb","admin","4dm1n1str");
despues se puede acceder a los elementos de la clase de la siguiente forma:
//Para obtener la conexion
Connexion conexion = qpn.getConexion();
package conexion;
/****************************************
* *
* @author Marco A. Trejo Lemus *
* 17/06/2008 09:47:01 AM *
****************************************/
import java.sql.*;
public class GenericaDb
{
public String driver,url,ip,bd,usr,pass;
public Connection conexion;
public GenericaDb(String ip, String bd, String usr, String pass)
{ driver="com.mysql.jdbc.Driver";
this.bd = bd;
this.usr = usr;
this.pass = pass;
url = new String("jdbc:mysql://"+ip+"/"+bd);
try
{ Class.forName(driver).newInstance();
conexion=DriverManager.getConnection(url,usr,pass);
System.out.println("Conexion a Base de Datos "+bd+" Ok");
}
catch (Exception exc)
{ System.out.println("Error al tratar de abrir la base de Datos"+bd+" : "+exc);
}
}
public Connection getConexion()
{ return conexion;
}
public Connection CerrarConexion() throws SQLException
{ conexion.close(); conexion = null;
return conexion;
}
} //fin de la clase
martes, 10 de junio de 2008
Analisis de la creacion de un web service ...continuacion...
Definir el problema:
Que?
1.- Conexion con clases a bases de datos de manera local
2.- Que se publique un metodo para acceso a bases de datos en un webservice que pida
parametros de entrada y regrese un objeto Resultado
3.- Que se conecte desde un cliente al metodo del webservice
4.- Que el metodo del cliente se llame desde jsps y consulte la base de datos en el servidor, y obtenga el resultado
Actualmente estoy desarrollando con tecnologia netbeans 6.1 - jax-ws 2.0 - metro -grassfish V2 un web service para la empresa donde laboro, despues de una ardua investigacion y muchos ejercicios he logrado publicar mi webservice con un metodo que me pedian, dejenme comentarles que en este web service tengo las clases divididas en 3 paquetes
1.-Conexion
2.-Servidor
3.-Tipos de datos
En el 1er paquete tengo clases para acceder a 2 bases de datos hechas en mysql donde tambien tengo las consultas que envian los resultados de tipo entero o string al webmethod del webservice
En el 2o paquete tengo el Metodo del Web Service
En el 3er paquete tengo clases que definen el tipo de dato que sera devuelto al usuario
La cuestion que se me presento es que me era necesario regresar un tipo de dato al cliente en donde vaya un entero y un string, lo he implementado mediante una clase llamada Resultado y me ha funcionado bien, acerca de como podra acceder el cliente es sencilla mediante su codigo fuente
String strdescripcion = Resultado.getString(strcadena);
En este caso, teniendo en cuenta que, dado que estamos en un ambiente de Arquitectura Orientada a Servicios, mi Servicio proporciona en la parte cliente las clases propias (desde la que accedas al port,hasta las clases que permiten usar los tipos de datos de vuelta
Al devolver un tipo compuesto por un String y un entero, bien. Se crea una clase, Resultado añadiendole campos de esos tipos y se trata como objeto en mi webservice a todos los efectos, el cliente al hacer uso de estas clases mediante el webservice de jax-ws puede hacer utilizarlo en su código fuente
*********
En la actualidad el proceso del webservice esta de la siguiente manera:
*****
@Webmethod
int intNremesa
int intNMensajeria
EscanelInicial lstEscaneoInicial
String strUsuario
String strClave
En donde lstEscaneoInicial es un arreglo de tipo objeto que recibire de parte del cliente con un string dentro este parametro es parte de una clase EscaneoInicial tipo Serializable, la clase la tengo declarada en mi Servidor
*****
El servidor:
Procesa parametros
y realiza consultas,
updates,inserts
*****
Responde con un objeto
de tipo Resultado:
*****
Resultado result;
result tiene:
int intNstatus
String strDescripcion
Cuentas lstCuentas(array)
el arreglo lstCuentas es un arreglo de tipo objeto que pertenece a la clase Cuentas la cual esta declarada de la siguiente forma:
Cuentas: strCuenta intNstatusCta
Entonces lstCuentas contendria: lstCuentas={1,.,.,.,.n}
es decir:
lstCuentas[1]: strCuenta intNstatusCta
lstCuentas[2]: strCuenta intNstatusCta
lstCuentas[3]: strCuenta intNstatusCta
lstCuentas[n]: strCuenta intNstatusCta
***
Como veran se esta utilizando Arreglos de tipo objeto en los cuales npaso el arreglo de tipo objeto de Clase Resultado result enviandole el arreglo al metodo de acceso de Resultado,
Marco Antonio Trejo Lemus
Mas informacion:
http://www.netbeans.org/kb/61/websvc/intro-ws.html
http://www.netbeans.org/kb/60/websvc/jax-ws.html
Continuara...
Que?
1.- Conexion con clases a bases de datos de manera local
2.- Que se publique un metodo para acceso a bases de datos en un webservice que pida
parametros de entrada y regrese un objeto Resultado
3.- Que se conecte desde un cliente al metodo del webservice
4.- Que el metodo del cliente se llame desde jsps y consulte la base de datos en el servidor, y obtenga el resultado
Actualmente estoy desarrollando con tecnologia netbeans 6.1 - jax-ws 2.0 - metro -grassfish V2 un web service para la empresa donde laboro, despues de una ardua investigacion y muchos ejercicios he logrado publicar mi webservice con un metodo que me pedian, dejenme comentarles que en este web service tengo las clases divididas en 3 paquetes
1.-Conexion
2.-Servidor
3.-Tipos de datos
En el 1er paquete tengo clases para acceder a 2 bases de datos hechas en mysql donde tambien tengo las consultas que envian los resultados de tipo entero o string al webmethod del webservice
En el 2o paquete tengo el Metodo del Web Service
En el 3er paquete tengo clases que definen el tipo de dato que sera devuelto al usuario
La cuestion que se me presento es que me era necesario regresar un tipo de dato al cliente en donde vaya un entero y un string, lo he implementado mediante una clase llamada Resultado y me ha funcionado bien, acerca de como podra acceder el cliente es sencilla mediante su codigo fuente
String strdescripcion = Resultado.getString(strcadena);
En este caso, teniendo en cuenta que, dado que estamos en un ambiente de Arquitectura Orientada a Servicios, mi Servicio proporciona en la parte cliente las clases propias (desde la que accedas al port,hasta las clases que permiten usar los tipos de datos de vuelta
Al devolver un tipo compuesto por un String y un entero, bien. Se crea una clase, Resultado añadiendole campos de esos tipos y se trata como objeto en mi webservice a todos los efectos, el cliente al hacer uso de estas clases mediante el webservice de jax-ws puede hacer utilizarlo en su código fuente
*********
En la actualidad el proceso del webservice esta de la siguiente manera:
*****
@Webmethod
int intNremesa
int intNMensajeria
EscanelInicial lstEscaneoInicial
String strUsuario
String strClave
En donde lstEscaneoInicial es un arreglo de tipo objeto que recibire de parte del cliente con un string dentro este parametro es parte de una clase EscaneoInicial tipo Serializable, la clase la tengo declarada en mi Servidor
*****
El servidor:
Procesa parametros
y realiza consultas,
updates,inserts
*****
Responde con un objeto
de tipo Resultado:
*****
Resultado result;
result tiene:
int intNstatus
String strDescripcion
Cuentas lstCuentas(array)
el arreglo lstCuentas es un arreglo de tipo objeto que pertenece a la clase Cuentas la cual esta declarada de la siguiente forma:
Cuentas: strCuenta intNstatusCta
Entonces lstCuentas contendria: lstCuentas={1,.,.,.,.n}
es decir:
lstCuentas[1]: strCuenta intNstatusCta
lstCuentas[2]: strCuenta intNstatusCta
lstCuentas[3]: strCuenta intNstatusCta
lstCuentas[n]: strCuenta intNstatusCta
***
Como veran se esta utilizando Arreglos de tipo objeto en los cuales npaso el arreglo de tipo objeto de Clase Resultado result enviandole el arreglo al metodo de acceso de Resultado,
Marco Antonio Trejo Lemus
Mas informacion:
http://www.netbeans.org/kb/61/websvc/intro-ws.html
http://www.netbeans.org/kb/60/websvc/jax-ws.html
Continuara...
Etiquetas:
glassfish,
jax-ws 2.0,
metro,
netbeans,
soap,
webservice
martes, 20 de mayo de 2008
Analisis de la creacion de un web service
Analisis de la implementacion de un Web Service
Web Services Description Language (WSDL)
Describe un servicio web en formato XMLWSDL representa un contrato entre el proveedor de servicio y el usuario del servicio
Para hacer uso de un web service como cliente debemos seguir lo siguiente:
Obtener el archivo WSDL
Leer el archivo WSDL para determinar lo siguiente:
Las operaciones soportadas.
El formato de entrada, salida, y mensajes de error
El protocolo que el servicio web.
La direccion donde el servicio web escucha, usando el protocolo
Crear un mensaje de entrada
Enviar un mensaje a la direcion usando el protocolo especificado
Esperara a recibir una salida o una falla en el formato especificado
En concreto WSDL describe el como, que y donde de el servicio:
Como el cliente llama el servicio?
Qué protocolo debe ser utilizado?
Dónde está el servicio disponible?
PORT TYPE = ABSTRACT INTERFACE
OPERATION = METHOD
MESSAGE = PARAMETERS AND RETURN VALUES
Es importante tener encuenta que debemos definir los alcances, Que?,Como? Cuando? Por que?
Los requisitos:
1.- Que es lo que el servicio WSDL va a hacer?
2.- Definir que tipo de informacion se van a intercambiar
3.- Mensajes de Entradas, salidas y fallas
4.- Tipos de datos que se manejan
5.- Metodos de envio y peticion... Request y Response
6.- Conexion a bases de datos
7.- Paginas JSP's
Definir:
Que?
1.- Conexion a bases de datos de manera local
2.- Que se publique un metodo para acceso a bases de datos en un webservice
3.- Que se conecte desde un cliente al metodo del webservice
4.- Que el metodo del cliente se llame desde paginas jsp's y consulte la base de datos en el servidor
WebService
-----------
ConexionMysql
ConsultaBd( Resultado )
WebCliente
-----------
jsps
Saludos!!
Mas informacion:
http://www.netbeans.org/kb/61/websvc/intro-ws.html
Continuara...
Web Services Description Language (WSDL)
Describe un servicio web en formato XMLWSDL representa un contrato entre el proveedor de servicio y el usuario del servicio
Para hacer uso de un web service como cliente debemos seguir lo siguiente:
Obtener el archivo WSDL
Leer el archivo WSDL para determinar lo siguiente:
Las operaciones soportadas.
El formato de entrada, salida, y mensajes de error
El protocolo que el servicio web.
La direccion donde el servicio web escucha, usando el protocolo
Crear un mensaje de entrada
Enviar un mensaje a la direcion usando el protocolo especificado
Esperara a recibir una salida o una falla en el formato especificado
En concreto WSDL describe el como, que y donde de el servicio:
Como el cliente llama el servicio?
Qué protocolo debe ser utilizado?
Dónde está el servicio disponible?
PORT TYPE = ABSTRACT INTERFACE
OPERATION = METHOD
MESSAGE = PARAMETERS AND RETURN VALUES
Es importante tener encuenta que debemos definir los alcances, Que?,Como? Cuando? Por que?
Los requisitos:
1.- Que es lo que el servicio WSDL va a hacer?
2.- Definir que tipo de informacion se van a intercambiar
3.- Mensajes de Entradas, salidas y fallas
4.- Tipos de datos que se manejan
5.- Metodos de envio y peticion... Request y Response
6.- Conexion a bases de datos
7.- Paginas JSP's
Definir:
Que?
1.- Conexion a bases de datos de manera local
2.- Que se publique un metodo para acceso a bases de datos en un webservice
3.- Que se conecte desde un cliente al metodo del webservice
4.- Que el metodo del cliente se llame desde paginas jsp's y consulte la base de datos en el servidor
WebService
-----------
ConexionMysql
ConsultaBd( Resultado )
WebCliente
-----------
jsps
Saludos!!
Mas informacion:
http://www.netbeans.org/kb/61/websvc/intro-ws.html
Continuara...
Etiquetas:
glassfish,
jax-ws 2.0,
metro,
netbeans,
soap,
webservice
Suscribirse a:
Entradas (Atom)