jueves, 24 de diciembre de 2009

Video sobre Origami

Jejeje todos merecemos un descanso, antes de seguir con nuestras labores, y no hay nada como tomar un pedazo de papel (yo uso reciclado en su mayoria), y ponermos a crear magnificas figuras, que para mi, dan un toque unico donde quiera que las veamos.

pues sin mas que decir aqui les presento este video que me encontre, esta historia animada es de Fred, el origamiste experimental, que renunció al mundo con sus manos.

Que lo disfruten


Instalacion de PostgreSQL en Fedora

Utilizaremos la consola / Shell para la instalación, también es posible hacerlo mediante “Añadir quitar Software”, pero optaremos por consola.

1) Accedemos como administrador / root


[acisey@localhost] $ su -
[root@localhost] # yum -y install postgresql postgresql-libs postgresql-contrib postgresql-server postgresql-docs


2) Inicializar el Clúster o Base de Datos;
Antes de poder correr el servicio, necesitamos inicializar por primera vez nuestro clúster, esto se hace con el siguiente comando:

[root@localhost] # service postgresql initdb

3) Iniciar el Servicio:

[root@localhost] # service postgresql start

4) Configuración de Acceso;
Ahora modificaremos algunos permisos de acceso, que estan establecidos por defecto.

Nos identificamos como usuario postgres

[root@localhost] # su - postgres

Abrimos el archivo de configuracion postgres.conf

cd data
nano postgresql.conf

Donde buscaremos la seccion: CONNECTIONS AND AUTHENTICATION
y modificaremos localhost por *. Salvamos el archivo ("Ctrl" + "O").


Abrimos el archivo de configuracion pg_hba.conf

nano pg_hba.conf

Donde buscaremos la seccion: #TYPE DATABASE
donde comentaremos todas las lineas que contiene esta seccion, para ello antecederemos a cada linea el caracter # y agregaremos las siguientes lineas:

local all all trust
host all all 0.0.0.0/0 trust

Con lo que permitiremos que cualquier direccion ip remota pueda acceder a nuestro servidor de Base de Datos. Salvamos el archivo ("Ctrl" + "O").Y salimos de usuario postgres

exit

5) Reiniciamos el servicio de postgres;


[root@localhost] # service postgresql restart

6) Hacer usuarios PostgreSQL

[root@localhost] # su - postgres

createuser acisey

Nota: Donde acisey, es el usuario a crear.

7) Prueba de conexion

como usuario normal (creado anteriormente como usuario postgres).

[acisey@localhost] $ createdb prueba
[acisey@localhost] $ psql prueba


Si todo fue bien,obtendremos:

Bienvenido a psql 8.4, la terminal interactiva de PostgreSQL.

Digite: \copyright para ver los términos de distribución
\h para ayuda de órdenes SQL
\? para ayuda de órdenes psql
\g o punto y coma («;») para ejecutar la consulta
\q para salir

prueba=>

Arellano Bello Gilberto Jesus
Lic.informatica,Tecnologico de Zacatepec

miércoles, 23 de diciembre de 2009

Respaldar BD en MySQL

La gran importancia de poder llevar a cabo un backup (copia de seguridad) de una base de datos; se ve reflejado cuando necesitamos trasladar una base de datos de un servidor a otro, o cuando necesitamos tener un respaldo de la informacion contenida en esta, todo esto sin tener que volver a construir, y reinsertar la informacion que ya contenida.

Una de las formas mas eficaz y segura es el uso del comando mysqldump que es provisto al instalar el Servidor de MySQL (localizado en la carpeta bin, de la ubicacion donde reside la instalacion MySQL Server).

Con el uso de este comando obtendremos todas las instrucciones sql necesarias para poder llevar a cabo la restauracion exitosa de la copia de seguridad de la Base(s) de Dato(s).

ejemplo: (debe ubicarse en la carpeta bin, donde reside la instalacion de MySQL Server en caso no tener configuradas correctamente las variables de entorno)

Creacion de copia de seguridad


mysqldump --opt --password=yesicaea --user=adminbd yesi > d:\respaldoyesi.sql

Donde se especifica usuario (user) y contraseña (password) para acceder a la base de datos en este caso "yesi", que sera volcado en el archivo d:\respaldoyesi.sql.

Nota: el caracter ">" indica que es volcado hacia copia (backup).

Restaurar Copia de Seguridad

mysqldump --opt --password=yesicaea --user=adminbd yesi < d:\respaldoyesi.sql

Donde se especifica usuario (user) y contraseña (password) para restaurar a la base de datos nombre "yesi", que sera volcado desde el archivo d:\respaldoyesi.sql.

Nota: el caracter "<" denota que es volcado desde copia (restaurar).


Ademas de las opciones antes descritas este comando provee las siguientes opciones:

--print-defaults Imprimir la lista de argumentos de programa y salir.

--no-defaults No leer las opciones por defecto de cualquier archivo de opciones.

--defaults-file=# Solo leer las opciones dadas por defecto desde el archivo #.

--defaults-extra-file=# Leer este archivo después de que los archivos globales se lean.

-A, --all Volcado de todas las bases de datos.

-databases Volcado de todas las bases de datos seleccionadas.

--add-drop-database Añade un 'DROP DATABASE' antes de cada create.

--add-drop-table Añade un 'drop table' antes de cada create.

--add-locks Añade un candado en cada instruccion insert.

--allow-keywords Permite la creación de nombres de columnas que son palabras clave.

--character-sets-dir=name Donde los conjuntos de caracteres son Directorio.

-i, --comments Escribir informacion adicional.

--compatible=name Cambiar el basurero para ser compatible con un modo determinado. Por Las
tablas por defecto se descargan en un formato optimizado paraMySQL. Los
modos admitidos son: ANSI, MYSQL323, MYSQL40, PostgreSQL, Oracle, MSSQL,
DB2, MaxDB, NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS. Se pueden
utilizar varios modos separados por comas. Nota: Se requiere servidor MySQL
versión 4.1.0 o superior. Esta opción se ignora con las versiones anteriores
del servidor.


--compact Genera la opcion menos prolijo (útil para la depuración). Desactiva
comentarios estructura y encabezado y pie de las construcciones. Permite
las opciones - skip-add-drop-table - no-set-nombres - skip-disable-keys - skip-add-locks.

-c, --complete-insert Uso completo de las instrucciones de insert.

-C, --compress Usar compresión en el protocolo cliente/servidor.

--create-options Incluir todas las específicaciones de MySQL en la creacion de opciones.

-B, --databases Para volcar varias bases de datos. Nótese la diferencia de uso;
En este caso no se dan las tablas. Todos los argumentos son nombres
considerados como nombre de bases de datos. 'USE db_name;' se
incluira en la salida.

-#, --debug[=#] Esta es una versión de depuración. La captura de esta y su salida.

--default-character-set=name Ajuste del conjunto de caracteres predeterminado.

--delayed-insert Inserta filas con INSERT DELAYED;

--delete-master-logs Elimina registros en el master despues del backup. Esto automaticamente
habilita --master-data.

-K, --disable-keys '/*!40000 ALTER TABLE tb_name DISABLE KEYS */; y
'/*!40000 ALTER TABLE tb_name ENABLE KEYS */; se pondra
en la salida.

-e, --extended-insert Permite la utilización de la nueva sintaxis de un INSERT mucho más rápido.

--fields-terminated-by=name Campos en el archivo de texto se pone fin mediante ...

--fields-enclosed-by=name Los campos del archivo importado están limitado por ...

--fields-optionally-enclosed-by=name Los campos de la impotacion de archivos son opcionales delimitados por ...

--fields-escaped-by=name Los campos del archivo importado son evadidos por ...

-F, --flush-logs Limpia los registros de archivo en el servidor antes de iniciar el volcado. Tenga en
cuenta que si vuelca varias bases de datos a la vez (utilizando la opción de
--databases= o --all-databases), los registros se vuelcan para cada base de datos en
objetos de dumping. La excepción es cuando se usa - lock-all-tables o - master-data: en este caso
los registros se vuelcan sólo una vez, correspondiente a todas las tablas que al momento están
bloqueadas. Así que si quiere que el volcado y el limpiado de registro suceda al mismo tiempo,
usted debe usar - lock-all-tables o - master-data con - flush-logs.

-f, --force Continuar, incluso si se obtiene un error de SQL.

-?, --help Muestra mensaje de ayuda y sale.

--hex-blob Volcado de cadenas binarias (BINARY, VARBINARY, BLOB) en
formato hexadecimal.

-h, --host=name Conectar al host.

--ignore-table=name No volcar la tabla especificada. Para especificar más de una
tabla a ignorar, use la directiva múltiples veces, una vez
para cada tabla. Cada tabla debe ser especificado con ambos
(base de datos y nombres de tabla), ejemplo --ignore-table=database.table

--insert-ignore Insertar filas con INSERT IGNORE.

--lines-terminated-by=name Líneas en el archivo importado deben ser terminadas por ...

-x, --lock-all-tables Bloquea todas las tablas en todas las bases de datos. Esto se logra
mediante la adopción de un bloqueo de lectura global, para la duración de la
volcado de conjunto. Se activa automáticamente --single-transaction y
--lock-tables off.

-l, --lock-tables Bloqueo de todas las tabla para lectura.

--master-data[=#] Esto hace que la posición del log binario y el nombre que se
anexa a la salida. Si es igual a 1, se imprimirá como una
Comando CHANGE MASTER, si es igual a 2, que el comando
estar precedido de un símbolo de comentario. Esta opción se enciende
- lock-all-tables, a menos que - single-transaction sea
especificada también (en cuyo caso un bloqueo de lectura global es sólo
tomado durante un corto período de tiempo al inicio de la descarga - no
se olvide de leer acerca de - single-transaction abajo). En todos los
casos, cualquier acción en logs que sucederá en el momento exacto
de la dump. opcion se activa automáticamente - lock-tables off.

--max_allowed_packet=#
--net_buffer_length=#
--no-autocommit Envolver con tablas de intrucciones de confirmación automática / confirmacion.

-n, --no-create-db 'CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;' cuando no se pueda insertar
en la salida. La linea anterior se agregara de lo contrario, if --databases o
--all-databases opciones dadas.}.

-t, --no-create-info No escribir información de la creación de la tabla.

-d, --no-data No informacion de fila.

--opt Same as --add-drop-table, --add-locks, --create-options,
--quick, --extended-insert, --lock-tables, --set-charset,
and --disable-keys. Enabled by default, disable with
--skip-opt.

--order-by-primary Ordena las filas de cada tabla de clave principal o primer llave unica,
si dicha clave existe. Útil cuando el volcado de una tablas MyISAM
para ser cargado en una tabla InnoDB, pero lo hará
el volcadero a fin de adaptarse por sí misma, tardando mucho más tiempo.

-p, --password[=name] Contraseña para usar cuando se conecta al servidor. Si la contraseña no
es dada se solicitado en el TTY.

-W, --pipe Uso de nombre de canalizaciones para conectarse al servidor.

-P, --port=# Numero de puerto usado para la conexion.

--protocol=name El protocolo de conexion (tcp,socket,pipe,memory).

-q, --quick No usar búfer de consulta, volcado directo a la salida estándar.

-Q, --quote-names Cotización de tabla y nombres de columna con comillas simples invertidas ( `).

-r, --result-file=name Salida directa a un archivo dado. Esta opción debe ser utilizada,
en MSDOS, porque previene que la nueva línea '\ n' de ser
convierte en '\ r \ n ( "retorno de carro + avance de línea).


-R, --routines Volcado de procedimientos almacenados (funciones y procedimientos).

--set-charset Agrega 'SET NAMES default_character_set' para la salida.
habilitado por el defaul; reprimir con --skip-set-charset.

- variable-name Cambiar el valor de una variable. Establecer las variables directamente con
- variable-name = valor.

--shared-memory-base-name=name Nombre base de memoria compartida.


--single-transaction Crea una imagen coherente de todas las tablas de volcadas en un
sola transacción. Funciona sólo para tablas almacenadas en
Los motores de almacenamiento que soportan multiversion (en la actualidad
InnoDB no sóla), el volcado consistente no se garantiza para motores de almacenamiento.
Opción se desactiva automáticamente - lock-tables.


--skip-opt Desabilita --opt. desactiva --add-drop-table, --add-locks,
--create-options, --quick, --extended-insert,
--lock-tables, --set-charset, y --disable-keys.
-S, --socket=name Archivo de Socket usado para la conexion.

-T, --tab=name Crea archivo de texto separados por tabulaciones para cada tabla que da la
ruta. (crea. SQL y. txt). NOTA: Esto sólo funciona si mysqldump se ejecuta
en la misma máquina que el demonio mysqld.

--tables Opcion de remplazo --databases (-B).

--triggers Volcado de triggers de cada tabla volcada.

--tz-utc Ingresa TIME_ZONE='+00:00' en la parte superior del backp para permitir
el volcado de la TIMESTAMP cuando un servidor tiene datos en diferente tiempo,
las zonas o los datos se está moviendo entre los servidores con diferentes
zonas horarias.

-u, --user=name Usuario para entrar, si no es usuario actual.

-v, --verbose Imprimir información sobre las distintas etapas.

-V, --version Muestra informacion sobre la version.

-w, --where=name Volcado de los registros seleccionados; condicion obligatoria!!!!

-X, --xml Volcado de una BD en formato XML.


Arellano Bello Gilberto Jesus

Lic.informatica,Tecnologico de Zacatepec

Montar partición NTFS en Linux

Aveces, cuando particionamos nuestro DD y queremos acceder a una partición de Windows desde nuestro sistema Linux tenemos problemas. Aunque algunas distribuciones montan las particiones automaticamente, como Ubuntu, hay otras en las que lo tenemos que hacer manual.
Para esto, primero hay que instalar un programa que nos ayudara con esta tarea:

Instalamos ntfs-3g

Luego creamos un directorio, que será el lugar en donde montaremos la partición:

# mkdir /media/Windows

Con el comando fdisk -l, podemos ver nuestra tabla de particiones en caso de no saber en cual partición tenemos Windows.

Cuando ya sabemos en cual partición está, la montamos:

# mount -t ntfs-3g /dev/sdaX /media/Windows

sdaX será la partición que montaremos, hay que cambiar la X por el número
de la partición y Windows será el directorio que creamos para montarla.

Y para que la partición quede montada aun después de reiniciar el ordenador y no tener que hacerlo cada vez que necesitamos acceder a ella desde Linux, editamos fstab:

 # nano /etc/fstab

le agregaremos la siguiente linea al final:

/dev/sdaX /media/Windows ntfs-3g defaults,locale=es_ES.UTF8 0 0

Guardamos con Ctrl+o

y listo :)

martes, 22 de diciembre de 2009

Problemas para usar Comandos en Linux

En algunos momentos nos hemos percatado, de que no podemos hacer uso de comandos como: ifconfig, iwconfig, debido a que no los tienen asignados por default, para poder hacer uso de estos basta con:

Acisey@localhost $ su

[root@localhost] # ln /sbin/iwconfig /usr/bin

Nota: Donde iwconfig es el comando deseado a enlazar.

Permisos en Linux

CHMOD
Debemos saber que los permisos, se asignan con un número de tres dígitos, ejemplo:

CHMOD 701



Donde cada valor en un rango de 0-7 tiene su significado



Arellano Bello Gilberto Jesus

Lic.informatica,Tecnologico de Zacatepec

Comandos Linux

Manejo de Archivos

cd - sirve para cambiar el directorio
compress - con este comando se comprimen archivos en formato .Z
cp - hace una copia de un archivo
chmod - cambia los permisos de un archivo o directorio
chown - cambia el propietario del archivo o directorio
df - muestra el espacio libre en disco
du - muestra el espacio utilizado en disco
fdformat - formatea un disquete
fdisk - se utiliza para particionar unidades
file - determina el tipo de archivo a través del análisis parcial de su contenido
find - hace una búsqueda a un archivo determinado
fsck - examina el sistema de archivos
gzip - descomprime un archivo en formato GZip
ln - crea un enlace simbólico o físico, dependiendo de la opción
ls - lista el contenido de un directorio
mkdir - crea un directorio
mkfs - crea un nuevo sistema de archivos
mkswap - crea un espacio de intercambio
more - muestra el contenido de un archivo
mount - monta una unidad o partición en el sistema de archivos
mv - mueve un archivo y también se utiliza para renombrar
pwd - devuelve la cadena correspondiente al directorio actual
rm - borra un archivo
rmdir - borra un directorio
swapon - activa el espacio de intercambio
swapoff - desactiva el espacio de intercambio
tar - empaqueta o desempaqueta un archivo en formato .tar
type - muestra la ubicación de un archivo señalando su "path"
umount - desmonta una unidad o partición en el sistema de archivos

Manejo de Procesos
free - muestra la memoria libre y utilizada
halt - apaga la maquina
kill - mata un proceso señalando el número de éste
ldd - muestra las librerías necesarias para ejecutar un proceso
ps - muestra todos los procesos que se están ejecutando en el sistema
pstree - muestra todos los procesos que se están ejecutando en el sistema, pero en forma de Arbol
reboot - reinicia el sistema
shutdown - cierra el sistema
top - monitorea procesos y el estado del sistema
uname - muestra información del sistema

Manejo de Usuarios
adduser - crea una cuenta de usuario
chsh - este comando cambia la shell de un usuario
groups - muestra el listado de grupos de usuarios del sistema
id - muestra la información de usuario y grupo de un determinado usuario
logout - se sale del sistema deslogueando al usuarui, peromitiendo iniciar sesión con otro usuario
passwd - cambia la contraseña de un determinado usuario
su - le da privilegios de root (administrador) a un usuario
talk - permite hablar con otros usuarios
users - lista los usuarios conectados al sistema
who - muestra información de los usuarios conectados al sistema
whoami - muestra nuestra información

Manejo de Red
ping - manda paquetes esperando una respuesta del lugar que le indiquemos
ifconfig - muestras las tarjetas de red (Ethernet)
iwconfig - muestra Las tarjetas de red (Wifi)
host "destino" - muestra la IP del "destino"

Manejo de Paquetes
rpm - "opcion" "paquete" - instala o desinstala el "paquete" dependiendo de la opción
dpkg - "opcion" "paquete" - instala o desinstala el "paquete" dependiendo de la opción, este comando solo sirve para paquetes debian.
tar - "opcion" "paquete" - comprime o descomprime el "paquete" de formato tar.gz, tar.tgz o tar.bz2


Arellano Bello Gilberto Jesus

Lic.informatica,Tecnologico de Zacatepec

Archivos JAR

Un archivo JAR (por sus siglas en inglés, JAVA ARchive) es un tipo de archivo que permite ejecutar aplicaciones escritas en lenguaje Java, donde podemos meter cualquier tipo de archivo, incluso directorios. Si exite alguna referencia a archivos dentro de otro directorio estas se mantendrán sin producirse errores ya que la jerarquía de directorios se mantiene dentro del archivo.

Opciones que presenta el comando JAR
c .- Indica que vamos a crear un archivo.
f .- Indica que la salida quieres que vaya a un fichero, y no a la salida estandar.
v .- Indica que quieres obtener información durante el proceso de creación del archivo.
m .- Indica al programa que queremos personalizar el archivo de manifiesto para añadir información adicional.
M .- Indica que no se cree el archivo de manifiesto.
0 .- Indicamos que no queremos que se comprima el contenido del archivo.

Archivo de Manifiesto

El archivo de manifiesto es un archivo de texto plano (sin formato) por lo que podrá ser creado con cualquier editor de textos convencional. El archivo podrá tener cualquier nombre y/o extensión ya que lo que el programa jar lo que hará será mezclar el contendio de este archivo con el que se crea por defecto. Pero usaremos la nomenclatura oficial:

Crearemos un directorio con el nombre META-INF Y Con un unico archivo llamado MANIFEST.MF; el cual contrendra una unica linea:

Main-Class: claseprincipal

Donde especificamos la clase principal (la que contiene el main), y al final de esta linea un "enter", que indicara corte de linea.

En linea de comandos escribir:

jar cfm META-INF\MANIFEST.MF Nombre.jar ClasePrincipal.class *.class Imagen.gif *.mp3


Nota: El uso del comodin * nos facilitara el agregar todos los archivos .class, asi como otros tipos de archivos.


Arellano Bello Gilberto Jesus

Lic.informatica,Tecnologico de Zacatepec

Compilar Alpha controls C++ 2010

Necesario para compilar
  • C++ builder 2010
  • Descargar el Paquete de Alpha Controls (http://www.alphaskins.com/dwnld.php Para uso de explicación usare la versión free)

  • Una vez obtenido el paquete proseguiremos a descomprimirlo en la ubicación deseada.En mi caso la dirección donde descomprimi es “E:\Software\Herramientas de desarrollo\Programacion\C++ BUILDER 2010\ALPHA”
  • Agregaremos la ruta de la versión a instalar en este caso CB2010 al path del sistema fig. 1.0, quedando el valor a agregar como:
E:\Software\Herramientas de desarrollo\Programacion\C++ BUILDER 2010\ALPHA\CB2010


Fig. 1.0

  • Abrimos la IDE de c++ builder 2010, y procedemos a abrir el archivo acntCB2010_R.bpk,localizado en CB2010, que es el correspondiente a esta versión, una vez abierto procederemos a:

Establecer el valor de la ruta donde se encuentra el paquete, para ello nos dirigimos al menú tools,options (fig. 1.2), en el elemento Paths and Directories: modificaremos el valor de Include path, agregando al final de la cadena existente el valor correspondiente a la carpeta principal donde descomprimimos nuestro proyecto, anteponiedo “;” punto y coma. En mi caso

;E:\Software\Herramientas de desarrollo\Programacion\C++ BUILDER 2010\alpha

Fig. 1.2



Establecer el valor de la ruta para el proyecto donde se encuentra el paquete, para ello nos dirigimos al menú Project, options (fig. 1.4), en el elemento Directories and Conditionals: modificaremos el valor de Final output directory, agregando el valor de la ruta donde se localiza nuestra versión a instalar, en mi caso

E:\Software\Herramientas de desarrollo\Programacion\C++ BUILDER 2010\ALPHA\CB2010

Tendremos que especificar en el atributo Intermediate output, “ ”, es de suma importancia dejar vacio este atributo.

Fig. 1.4

Crear el recurso (MAKE), para hacerlo basta dar clic derecho sobre el cuadro de navegación de proyecto MAKE (fig. 1.3)

Fig. 1.3

Para finalizar la instalación de los componentes Alpha controls, bastara con abrir el archivo acntCB2010.bpk, contenido en CB2010; una vez abierto nos dirigimos a:

En el explorador de proyectos procedemos a dar click secundario sobre el proyecto abierto, y click en INSTALL (fig. 1.5)

Fig. 1.5

Si todo resulta bien nos mostrara el siguiente mensaje (fig. 1.6).

Fig. 1.6




Prueba



  • Comprobaremos la Instalación correcta de nuestro paquete, en la figura 1.7 podremos observar que se ha montado Alpha Controls 2009


Ejemplo rápido de cómo usar los controles
Creamos un proyecto formulario vcl, y agregaremos el siguiente control sSkinManager1. y definimos las siguientes propiedades:



Nota: Para la propiedad SkinDirectory, Es necesario referenciar a la carpeta skin que se localiza en nuestro directorio donde descomprimimos el fuente.




Ya estamos en condiciones de agregar nuestros controles cotidianos y el resultado se puede observar en la fig. 1.7

Fig. 1.7


Arellano Bello Gilberto Jesus

Lic.informatica,Tecnologico de Zacatepec


Boot Windows

Archivo de Arranque de Windows XP



Lista de Archivos de inicio.


Archivo Localización Fase en el boot
NTLDR C:\ (System Partition Root) preboot y boot
BOOT.INI C:\ Inicio
BOOTSECT.DOS C:\ Inicio (opcional)
NTDETECT.COM C:\ Inicio
NTBOOTDD.SYS C:\ Inicio (opcional)
NTOSKRNL.EXE systemroot\system32 Carga del Kernel (núcleo)
HAL.DLL systemroot\system32 Carga del Kernel (núcleo)
SYSTEM systemroot\system32 Inicialización del Kernel
dispositivos.sys systemroor\system32\drivers Inicialización del Kernel


El archivo BOOT.INI

Al instalar Windows XP, se modifica o se crea un archivo boot.ini en la partición activa (arrancable) del sistema.

El archivo boot.ini; contiene dos secciones [boot loader] y [operating systems].El programa NTLDR, usara la deficion y atributos a mostrar en pantalla.

Estructura

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(4)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(4)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home" /noexecute=optin /fastdetect


Nota: La sección [operating systems] se crea durante la instalación de un Windows. cuando sea necesario instalar varios sistemas operativos deber ser por edad del mas antiguo al mas reciente.




Caminos ARC (Advanced RISC Computing)

Durante la instalación se modifica o se crea el archive boot.ini usando los nombres o caminos ARC: Advanced RISC Computing (RISC: Reduced Instruction Set Computing)

Un ejemplo de camino ARC es: multi(0)disk(0)rdisk(1)partition(3)

Cada nombre tiene el siguiente significado:

  • multi(x) o scsi(x): El controlador de disco. SCSI solo se usa si es un disco que pertenece a una controladora SCSI y cuya BIOS no se ha cargado al encender el ordenador. Para todos los demás, inclusive los SCSI con BIOS cargada en memoria, se utiliza multi. "x" represente un número empezando por cero que indica el orden de carga del adaptador. Por ejemplo, si tuviésemos dos adaptadores SCSI en nuestra máquina, el primero en cargar e inicializarse llevaría un 0, el segundo llevaría un 1.
  • disk(y) El ID del dispositivo SCSI. Si es "multi", siempre llevará un 0.
  • rdisk(z) Un número que identifica el disco físico (empezando por 0, el cual corresponde al primer disco "físico" en nuestro sistema).
  • partition(t) Un número que identifica la partición dentro del disco "físico" anterior. La numeración de particiones comienza por 1. Se numeran consecutivamente todas las particiones primarias que existen en nuestro disco, y a continuación, se numeran consecutivamente las unidades lógicas dentro de una partición extendida si la tuviésemos.


Modificadores en el archivo BOOT.INI


  • /basevideo Arrancará nuestra maquina usando el adaptador estándar VGA. Es útil en caso de que nuestra maquina se niegue a arrancar después de instalar un nuevo driver de vídeo.

  • /fastdetect=[com x | como x,y,z] Desactiva la detección de ratón en puerto serie. Si no especificamos puerto "com", este modificador desactiva la detección de todos los puertos serie. Se incluye este modificador en todas las entradas del boot.ini por defecto.

  • /maxmen:n Especifica la cantidad de memoria que Windows va a usar. Debe usarse este modificador si sospechamos que un chip de memoria está dañado.

  • /noguiboot Arranca sin sacar la pantalla gráfica de inicio del sistema.

  • /sos Nos muestra por pantalla los nombres de los controladores de dispositivos que se van cargando. Debemos usar este modificador cuando falla el arranque para poder determinar que driver es el causante del error.


Modificaciones al archivo BOOT.INI

Podemos modificar directamente el tiempo de espera y el sistema operativo a editar manualmente el archivo con cualquier editor de texto. Estableciendo en Windows las opciones de ver todos los archivos ocultos y archivos del sistema. El archivo boot.ini siempre reside en el disco C:\ independientemente de la partición en la cual hayamos instalado Windows.

timeout=30
default=multi(0)disk(0)rdisk(0)partition(4)\WINDOWS




Secuencia de Pre-Inicio (Pre-Boot)

Durante el arranque de cualquier máquina, su BIOS localiza el sector de arranque del disco duro (MBR). Los siguientes 4 pasos describen el pre-inicio:

  1. Cuando encendemos un ordenador, se ejecutan las rutinas POST (Power and Self Test) para determinar la cantidad de memoría física y los componentes de hardware presentes en la máquina.
  2. La BIOS, localiza el dispositivo de arranque (BOOT) y carga y ejecuta el MBR (Master Boot Record)
  3. El MBR busca en su tabla de particiones, la partición que esté marcada como "activa", carga en memoria el sector de boot de dicha partición y lo ejecuta.
  4. Dicho sector, carga y ejecuta el archivo NTLDR el cual es el cargador del sistema operativo.



Secuencia de Inicio (Boot)

Después de cargar en memoria NTLDR, la secuencia de inicio busca información acerca del hardware y los controladores para preparar las fases de carga del sistema operativo. La secuencia de boot, utiliza los siguientes ficheros: NTLDR, BOOT.INI, BOOTSECT.DOS (opcional), NTDETECT.COM y NTOSKRNL.EXE.

Esta secuencia de Boot tiene 4 fases, fase de Initial Boot Loader (cargador inicial), fase de selección del sistema operativo, detección de hardware y selección de la configuración.

Initial Boot Loader

Durante este fase, NTLDR cambia el modo de funcionamiento del procesador, de modo real a modo protegido (32 bit flat memory mode). Posteriormente NTLDR arranca los minidrivers del sistema incorporados dentro del propio NTLDR. Estos minidrivers permiten a NTLDR localizar y cargar Windows desde particiones FAT, FAT32 y NTFS.

Selección del Sistema Operativo

Durante la secuencia de inicio, NTLDR lee el archivo BOOT.INI. Si dicho archivo tiene más de una linea de selección del sistema operativo, se muestra una pantalla durante el tiempo predeterminado en el archivo BOOT.INI para poder seleccionar el sistema operativo a arrancar.

Si no seleccionamos en este caso ninguna entrada, NTLDR cargará el sistema operativo por defecto que esté especificado en el archivo BOOT.INI. Sólo se muestra si hay más de una línea de sistema operativo instalado en el archivo BOOT.INI.

Si el archivo BOOT.INI no existe, NTLDR siempre intenta cargar el sistema operativo de la primera particion activa del primer disco duro (EN C:\)

Detección de Hardware

NTDETECT.COM y NTOSKRNL.EXE realizan la detección del hardware. NTDETEC.COM se ejecuta inmediatamente después de haber seleccionado el sistema operativo a arrancar.

Si seleccionamos un sistema operativo de núcleo W9X en vez de núcleo NT / W2000 /XP, NTLDR cargará y ejecutará BOOTSECT.DOS el cual es una copia del sector de arranque que existía en la particion del sistema cuando instalamos por primera vez un sistema operativo de núcleo NT / W2000 / XP. Este sector corresponde a una partición formateada previamente con MSDOS o bien con algún sistema W9X / ME.

NTDETECT.COM empieza a construir una lista del hardware actualmente instalado y devuelve esta lista al programa NTLDR para una inclusión posterior en el registro bajo la clave HKEY_LOCAL_MACHINE\HARDWARE

NTDETECT.COM detecta los siguientes componentes:

· Tipo de adaptador del BUS
· Puertos de comunicaciones
· Coprocesador matemático
· Disqueteras
· Teclado
· Ratón o dispositivo apuntador
· Puerto paralelo
· Adaptadores SCSI
· Adaptadores de Vídeo.

Selección de la configuración

Después de que NTLDR comienza la carga de Windows y ha recuperado ya la información de hardware, el cargador del sistema presenta la pantalla de Perfiles de Hardware si en nuestra máquina está definido más de un perfil.

El primer Perfil de hardware se muestra con caracteres de alta intensidad. En esta pantalla, podemos seleccionar el perfil, o bien pulsar "L" para seleccionar la "última configuración buena conocida".

Si sólo existe un Perfil de Hardware, la pantalla anterior no se mostrará y Windows continuará la carga usando la configuracion del perfil de hardware por defecto.


Carga del Núcleo (Kernel)

Después de la Selección de la Configuración el núcleo (kernel) de Windows (NTOSKRNL.EXE) se carga e inicializa. Es en el momento en que la pantalla de selección anterior se borra y aparecen una serie de rectángulos blancos en una linea inferior de la pantalla que indican el proceso de carga de NTOSKRNL. (este proceso es muy rápido, y en Windows XP puede que no llegue a verse debido a que inmediatamente entra la pantalla gráfica del logo de carga de XP.

Durante esta fase de carga, NTLDR realiza lo siguiente:

· Carga NTOSKRNL.EXE pero no lo inicializa.
· Carga la capa de abstracción del hardware (HAL.DLL -Hardware Abstraction Layer).
· Carga la clave del registro: HKEY_LOCAL_MACHINE\SYSTEM desde %systemroot%\System32\Config\System
· Selecciona un juego de control (control set) que va a utilizar para inicializar la máquina. Dentro de este "control set" están los datos que se utilizan para arrancar, como por ejemplo la lista de controladores de dispositivos y los servicios a arrancar y cargar.
· Carga los drivers de dispositivos que contienen un valor de 0x0 en la entrada "Start" de definición del dispositivo en el registro. Normalmente son controladores de hardware de bajo nivel. El valor de esta lista está específicado en:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder

En ella está el orden con el cual NTLDR va a cargar dichos controladores de dispositivos.


Inicialización del Núcleo (Kernel)

Cuando la fase de carga del núcleo (Kernel) se ha completado, se inicializa el Kernel y NTLDR pasa control al núcleo (NTOSKRNL.EXE). Es en este momento cuando el sistema muestra la pantalla gráfica con la barra de proceso de carga. Cuatro tareas van a ocurrir durante esta fase:
  • Creación de la clave del registro de Hardware. El Kernel usa los datos recogidos durante la detección de hardware para crear la clave del registro HKEY_LOCAL_MACHINE\HARDWARE la cual contiene información acerca de los componentes del hardware y las interrupciones usadas por los dispositivos específicos.
  • Se crea el entorno del Clone Control Set. Se crea copiando el valor del registro almacenado en HKEY_LOCAL_MACHINE\SYSTEM\Select. Estos datos nunca serán modificados y deben entenderse como una copia idéntica de los datos de configuración de la máquina y por tanto, no reflejará ningún cambio realizado durante la fase de arranque.Carga e inicialización de los controladores de dispositivos.
  • Después de crear el "Clone control set" el kernel inicializa los drivers de bajo nivel que se han cargado durante la fase de carga del núcleo. El núcleo busca la clave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services para localizar los controladores de dispositivos con el valor 0x1 en la entrada "Start". Al igual que en la fase de carga del núcleo el valor de la entrada "Group" especifica el orden en que serán cargados. Estos controladores se inicializan en el momento en que son cargados.

Si ocurre un error durante la carga e inicialización de uno de estos controladores, realizará la acción que está especificada en la entrada ErrorControl del controlador de dispositivo.

Los valores posibles son:

0x0 (Ignorar) La secuencia de inicio ignora el error y continúa sin sacar ningún mensaje.

0x1 (Normal) La secuencia de inicio saca un mensaje, pero ignora el error y continúa la carga.

0x2 (Severo) La secuencia de inicio falla y continúa, pero usando el juego de control de la "ultima configuración buena conocida". Se ignora el error y continúa.

0x3 (Crítico) Igual que la anterior, pero si en este caso, el error vuelve a suceder el la "ultima configuración buena conocida" se detiene la secuencia de inicio con un mensaje de error.

Los valores de ErrorControl aparecen en el registro bajos las subclaves HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Nombre_del_servicio_o_dispositivo\ErrorControl
  • Arranque de los Servicios. Después de que el Kernel cargue e inicialice los controladores de dispositivos, el programa Session Manager (SMSS.EXE) arranca estos subsistemas y servicios de Windows. SMSS ejecuta las instrucciones de las claves: BootExecute, Memory Management, DOS Devices y las subclaves del Subsytem.

BootExecute Ejecuta los comandos de esta clave antes de arrancar ningún servicio.

Memory Management Key Crea la información del fichero de paginación necesario para el Virtual Memory Manager.

DOS Device Key Crea los enlaces simbólicos (links) que direccionan ciertas clases de comandos al componente correcto del sistema.

SybSystems key Arranca el subsistema Win32, el cual controla toda la entras / salida (I/O) y los accesos a la pantalla de video y posteriormente arranca el proceso de WinLogon.


Logon

El proceso de Logon comienza al finalizar la fase de inicialización del Kernel. El sistema automáticamente arranca el programa WINLOGON.EXE, el cual arranca el Local Security Authority (LSASS.EXE) y nos muestra la pantalla de Logon. Se puede arrancar en este momento aunque Windows no haya terminado de inicalizar los controladores de dispositivos (drivers) de la red.

Posteriormente, el controlador de servicios (Service Controller) ejecuta y realiza una búsqueda final en la clave Services del registro, buscando los servicio con un valor 0x2 en la entrada. Estos servicios, incluyendo el servicio de Workstation y el servicio Server, son marcados para cargarse automáticamente.

Los servicios que son cargados durante esta fase están basados en los valores de la clave DependenOnGroup o DependOnService de las entradas en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.

El arranque de Windows no se considera finalizado y correcto hasta que el usuario se haya conectado. Después de este Logon correcto, el sistema el Clone Control Set a las claves de LastKnownGood.

Grub

El archivo de configuración (/boot/grub/grub.conf), usado para crear la lista en la interfaz de menú de GRUB de los sistemas operativos para el arranque

Nota: El carácter (#) se puede usar al principio de una línea para insertar comentarios en el archivo de configuración de menú.

Comandos especiales del archivo de configuración

Los comandos siguientes sólo pueden usarse en el archivo de configuración del Grub.

  • color Le permite configurar los colores específicos que se usarán en el menú. Se configuran dos colores: uno de fondo y otro de primer plano. Use nombres de colores simples…. color red/blue

  • default — Nombre del título por defecto de la entrada que se cargará si se supera el tiempo de inactividad de la interfaz de menú.

  • fallback — Si se utiliza, el nombre de título de la entrada que deberá probarse si falla el primer intento.

  • hiddenmenu — Si se utiliza, no se podrá mostrar la interfaz de menú de GRUB ni cargar la entrada default si caduca el período timeout. El usuario puede ver el menú estándar de GRUB si pulsa la tecla [Esc].

  • password — Si se utiliza, el usuario que no conozca la contraseña no podrá modificar las entradas de esta opción de menú. Opcionalmente, puede especificar un archivo de configuración de menú alternativo después de la password . En este caso, GRUB reiniciará el Nivel 2 del gestor de arranque y utilizará este archivo de configuración alternativo para crear el menú. Si se omite este archivo de configuración alternativo del comando, el usuario que sepa la contraseña podrá modificar el archivo de configuración actual.

  • timeout — Si se utiliza se establece la cantidad de tiempo, en segundos, antes de que GRUB cargue la entrada designada por el comando default.

  • splashimage — Especifica la ubicación de la imagen de pantalla splash que se utilizará al arrancar.

  • title — Establece el título que se utilizará con un grupo de comandos concreto para cargar un sistema operativo.
Estructura del archivo de configuración de GRUB

El archivo de configuración de menú de GRUB es /boot/grub/grub.conf. Los comandos para configurar las preferencias globales para la interfaz de menú están ubicados al inicio del archivo, seguido de las diferentes entradas para cada sistema operativo o kernels listados en el menú.

El siguiente es un ejemplo de archivo de configuración de menú para arrancar Fedora y Windows xp

default=0
timeout=5
splashimage=(hd0,4)/boot/grub/splash.xpm.gz
hiddenmenu

title Fedora (2.6.27.9-159.fc10.i686)
root (hd0,4)
kernel /boot/vmlinuz-2.6.27.9-159.fc10.i686 ro root=UUID=99305ea2 rhgb quiet vga=0x318
initrd /boot/initrd-2.6.27.9-159.fc10.i686.img

title Windows xp
rootnoverify (hd0,0)
chainloader +1


Este archivo indicará a GRUB que cree un menú con Fedora Linux como el sistema operativo predeterminado y que establezca un arranque automático después de 5 segundos. Se proporcionan dos secciones, una para cada entrada de sistema, con comandos específicos para la tabla de partición de cada sistema (root, rootverify).


Arellano Bello Gilberto Jesus

Lic.informatica,Tecnologico de Zacatepec

Arbol Grafico

-ViruzCorp-

Mostrar árbol

Muestra gráficamente la estructura de un árbol de búsqueda binaria, en forma recursiva.

public void mostrarArbol(NodoArbol raiz,String n){

if(raiz==null)

return;

n+="\t";

mostrarArbol(raiz.getDerecho(),n);

System.out.println(n+"("+raiz.getDato()+") <");

mostrarArbol(raiz.getIzquierdo(),n);

}





Arellano Bello Gilberto Jesus

Lic.informatica,Tecnologico de Zacatepec


Arbol AVL

Árboles AVL (Adelson-Velskii y Landis)

Árbol binario de búsqueda en el que para cada nodo, las alturas de sus subárboles izquierdo y derecho no difieren en más de 1.con el objetivo de maximizar el tiempo de acceso en búsqueda.
Basándose en el siguiente algoritmo:


Rotación derecha
1.- Se busca nodo padre de raíz (padre) (FIG. 1.0)
2.-Nodo a toma la referencia de nodo izquierdo de raíz (FIG. 1.0)
3.-Hijos derechos de nodo a pasan a ser de nodo izquierdo de raíz (FIG. 1.1)
4.-Nodo a apunta en su brazo derecho a raíz (FIG. 1.1)
5.-Padre de nodo raíz apunta a nodo a (FIG. 1.2)

a b
FIG. 1.0 FIG 1.1

c
FIG 1.2

Rotación Izquierda
1.- Se busaca nodo padre de raíz (padre) (FIG. 1.0)
2.-Nodo a toma la referencia de nodo derecho de raíz (FIG. 1.0)
3.-Hijos Izquierdos de nodo a pasan a ser de nodo derecho de raíz (FIG. 1.1)
4.-Nodo a apunta en su brazo izquierdo a raíz (FIG. 1.1)
5.-Padre de nodo raíz apunta a nodo a (FIG. 1.2)
d e
Fig. 1.0 Fig. 1.1

f

Fig. 1.2

Composición de Nodo en árbol AVL

Cada nodo, además de la información que se pretende almacenar, debe tener los dos punteros a los árboles derecho e izquierdo, igual que los árboles binarios de búsqueda (ABB), y además el dato que controla el factor de equilibrio.
Explicación de factor de equilibrio
El factor de equilibrio es la diferencia entre las alturas del árbol derecho y el izquierdo:
FE = altura subárbol derecho - altura subárbol izquierdo;
Donde la diferencia obtenida por definición de este árbol debe ser -1, 0, 1

g

Composición grafica del nodo:
h


Arellano Bello Gilberto Jesus

Lic.informatica,Tecnologico de Zacatepec

lunes, 21 de diciembre de 2009

Compilación de programas en linux a partir del código fuente

Compilar código fuente

Hay que buscar el codigo fuente del programa que se desea instalar. Este lo enocntraremos comprimido en .tar.bz2 o en .tar.gz
Para hacer un ejemplo en este tutorial instalaremos pidgin que bajamos el codigo fuente de la pagina oficial
Lo más recomendable es leer el archivo install que viene comprimido junto con el paquete pues ahí seguramente tendremos una guía rápida de instalación también.


1.- Descomprimir paquete

Descomprimimos primero el paquete. Para ello nos dirigimos a el directorio en donde lo descargamos.

# cd Desktop/

y lo descomprimimos con:

# tar -xjvf archivo.tar.gz2

para los .tar.gz2 y

# tar -xvzf archivo.tar.gz

para los .tar.gz

a

2.-Configurar

Nos dirigimos al directorio creado al descomprimir.

#cd nuevoDirectorio/

ya ahí ejecutamos el archivo configure de la siguiente manera:

# ./configure

a

Puede suceder que el proceso de configuración no se complete y que requiera de algún paquete extra o desabilitar ciertas opciones de lo que estamos instalando pero siempre tendremos información de lo que nos haga falta.
Para este caso la respuesta que manda es:

configure: error:
XScreenSaver extension development headers not found.
Use --disable-screensaver if you do not need XScreenSaver extension support,
this is required for detecting idle time by mouse and keyboard usage.

a

Podemos instalar los paquetes necesarios para solucionar este problema:

# apt-get install libstartup-notification0 libstartup-notification0-dev libxss-dev


O Desabilitar la opción:

#./configure --disable-screensaver

Cuando la configuración sea correcta obtendremos un mensaje parecido a el siguiente:

configure complete, now type 'make'

a

3.- Crear paquete

Para este paso solo ponemos:

#make

4.- Instalación del paquete

Como ultimo paso ponemos:

# make install

y esperamos a que termine de instalarse nuestro paquete.

Comentario

Algunos paquetes, principalemnte paquetes recientes cambien la manera de crearse de make por jam. En un caso así solo cambiamos, en vez de poner:

#make

ponemos:

#jam

y en vez de instalar con:

# make install

instalamos con:

# jam install

Carlos Alberto Silva Ramírez

Lic. Filosofía,UAEM

JDBC Eliminacion

«viruzCorp»
Delete eliminación de registro, usando clausula where

public void deleteInTable(String key){
//definer variables a utilizar
Statement instruccion;
String orden_SQL;
try{
//definimos el driver
Class.forName("com.mysql.jdbc.Driver");
//establecemos la conexion  NameDB=nombre de base de datos
//user=usuario de bd, pass= password
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/NameDB","user","pass");
//definimos el poder ver las modificaciones hechas en tiempo real
//por otros usuarios a los registros consultados

instruccion= con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
//establecemos intruccion sql usando una cláusula
//eliminara a todos los que coincidan con ella, especificada en este caso
//por key

orden_SQL = "DELETE FROM nameTable where campo="+key;
//ejecutamos la instruccion
instruccion.executeUpdate(orden_SQL);
//liberamos los recursos
instruccion.close();
con.close();
}
catch(Exception ex){JOptionPane.showMessageDialog(null,"Error",
"Advertencia",JOptionPane.INFORMATION_MESSAGE);}
}
Nótese la instrucción "DELETE FROM nameTable where campo="+key, es de suma importancia considerar que todos los que coincidan con la especificación where seran eliminados.

JDBC Consultar

«viruzCorp»
Consultar en una tabla, usando Select
public void selectReg (String key){
//declaramos las variables necesarias para
//obtener el resultado de una consulta
Statement instruccion;
ResultSet rs;Connection co;
String orden_SQL;
try{
//cargamos el driver
Class.forName("com.mysql.jdbc.Driver");
//definimos la conexion  NameBD=nombre de base de datos
//user=usuario, pass=password
con =DriverManager.getConnection("jdbc:mysql://localhost/NameBD","user","pass");
//definiremos la intruccion y prepararemos la ejecucion de esta
instruccion= con.createStatement();
//intruccion de sql, key podria ser un valor de condicion en la busqueda
orden_SQL = "SELECT campos FROM nameTable where condicion="+key;
rs = instruccion.executeQuery( orden_SQL );
while( rs.next() ){
System.out.println(rs.getString("campos"));
}
//liberamos recursos
rs.close();
instruccion.close();
con.close();
}
catch(Exception ex){ System.out.println("error");}
}
Nótese que se utiliza rs.getString("campos"); obteniendo así un valor String después de haber ejecutado la consulta por lo tanto existe un getxxx(), para cada tipo de dato soportado
rs.next() me permite desplazarme al siguiente registro obtenido. Al igual hay uno para posicionarse al inicio (rs.first()), al final (rs.last()), anterior (rs.previous ()), etc.
Arellano Bello Gilberto Jesus
Lic.informatica,Tecnologico de Zacatepec

JDBC Agregar

«viruzCorp»
Insert definiendo el valor dentro de instrucción, Usando Statement

public void insertInTable(String a,String b,int c)
{
//declaracion de variable de intruccion
Statement instruccion;
Connection con;
try{
//definimos el driver
Class.forName("com.mysql.jdbc.Driver");
//definimos la conexion: ruta,usuario,contraseña
con = DriverManager.getConnection("jdbc:mysql://localhost/NameBd","user","pass");
//preparamos la intruccion
instruccion= con.createStatement();
instruccion.executeUpdate( "INSERT INTO nameTable(campo1,campo2,campo3) VALUES('"+a+"','"+b+"',"+c+")");
//liberamos recursos
instruccion.close();
con.close();
}
catch(Exception ex){JOptionPane.showMessageDialog(null,"Error al intentar guardar",
"Advertencia",JOptionPane.INFORMATION_MESSAGE);}
}
Insert definiendo el valor fuera de la instrucción usando PreparedStatement

public void insertInTable(String a,String b,int c){
//establecemos variable para definir intruccion
String orden_SQL;
PreparedStatement instruccion;
Connection con;
try{
//definimos la conexion: ruta,usuario,contraseña
con = DriverManager.getConnection("jdbc:mysql://localhost/NameBD","user","pass");
//establecemos parametros de instruccion
instruccion= con.prepareStatement("INSERT INTO nameTable(campo1,campo2,campo3) values(?,?,?)");
//definimos valores a agregar en el registro 1, 2,3... Hasta n
instruccion.setString(1,a);
instruccion.setString(2,b);
instruccion.setInt(3,c);
//ejecutamos la accion de agregar
instruccion.executeUpdate();
//liberamos recursos
instruccion.close();
}
catch(Exception ex){JOptionPane.showMessageDialog(null,ex,
"Advertencia",JOptionPane.INFORMATION_MESSAGE);}
}
Nótese la instrucción instruccion.executeUpdate(); servirá para ejecutar la acción de agregar el registro en la tabla.
Así como existe un getxxx() para cada dato soportado así mismo existe un setxxx(), que es utilizado para definir el valor a agregar en campo especificado, aquí utilizamos los valores 1,2,3, pero pueden ser sustituidos por el nombre del campo(columna), por ejemplo
instruccion.setString(1,a); y usando el nombre de la columna quedaría de la siguiente manera instruccion.setString(“campo1”,a);


Arellano Bello Gilberto Jesus
Lic.informatica,Tecnologico de Zacatepec

JDBC Actualizar

«viruzCorp»

Update de un registro asignando valor en la misma instrucción sql(Statement) , usando clausula where

public void updateInTable(String key,String a){
//establecemos las variables necesarias
Statement instruccion;
String orden_SQL;
try{
//definimos driver
Class.forName("com.mysql.jdbc.Driver");
//parametros bd=base de datos, usr=usuario, ""=password
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/bd","usr","");
instruccion= con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
//definimos intruccion a campo se le asignara el valor de la variable
//a de acuerdo a la especificación where

orden_SQL = "UPDATE nameTable SET campo='"+a+"' where campo="+key;
//ejecutamos instruccion
instruccion.executeUpdate(orden_SQL);
//liberamos recursos
instruccion.close();
con.close();
}catch(Exception ex){JOptionPane.showMessageDialog(null,"Error",
"Advertencia",JOptionPane.INFORMATION_MESSAGE);}
}

Nótese la instrucción "UPDATE nameTable SET campo='"+a+"' where campo="+key; considerar que todos los que coincidan con la especificación where seran modificados.

Update de un registro asignando valor fuera de la instrucción sql(PreparedStatement) , usando clausula where


public void updateInTable( String key) {
//definimos variables
PreparedStatement pstmt;
Connection con = null;
try {
//establecemos conexion ver arriba( ejemplo 1)
con = DriverManager.getConnection("jdbc:mysql://localhost/bd","usr","");
//preparamos la instruccion
pstmt = con.prepareStatement("update nameTable set campo = ? where campo='" +key+"'");
//definimos el valor
pstmt.setString(1,"valor");
//ejecutamos actualizacion
pstmt.executeUpdate();
//liberamos recursos
pstmt.close();
con.close();
}catch (Exception e) {e.getMessage();}}

Nótese la instrucción "update nameTable set campo = ? where campo=" +key considerar que todos los que coincidan con la especificación where seran modificados.
Como ya se dijo antes la instrucción pstmt.setString(1,”valor”); (corresponde a la rama de los metodos setxxx(); ) , asi tambien se puede modificar el valor 1, por el nombre de la columna o campo.


Arellano Bello Gilberto Jesus

Lic.informatica,Tecnologico de Zacatepec