Foros del Web » Programación para mayores de 30 ;) » Java »

de un archivo a una base de datos

Estas en el tema de de un archivo a una base de datos en el foro de Java en Foros del Web. necesito saber como crear el encabezado de una bd ya que es un proyecto, lo único que se es que se debe crear un archivo ...
  #1 (permalink)  
Antiguo 14/02/2008, 12:37
 
Fecha de Ingreso: febrero-2008
Mensajes: 3
Antigüedad: 16 años, 9 meses
Puntos: 0
Exclamación de un archivo a una base de datos

necesito saber como crear el encabezado de una bd ya que es un proyecto, lo único que se es que se debe crear un archivo en lenguaje de alto nivel llamese java, c , c++, delphi, pascal, etc y hacer su encabezado, para ello existe el estandar para bd que es el *.dbf, como puedo crear ese archivo por que debe correr en cualquier dbms

Por favor ayudenme, si tienen algo que me pueda servir
  #2 (permalink)  
Antiguo 18/02/2008, 07:43
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Re: de un archivo a una base de datos

ufff estas mezclando muchos conceptos y lo de crear un fichero que sirva para cualquier motor de BD.... es imposible.
  #3 (permalink)  
Antiguo 18/02/2008, 19:09
 
Fecha de Ingreso: febrero-2008
Mensajes: 3
Antigüedad: 16 años, 9 meses
Puntos: 0
De acuerdo Re: de un archivo a una base de datos

de todas formas muchas gracias

  #4 (permalink)  
Antiguo 19/02/2008, 13:35
Avatar de davico_tico  
Fecha de Ingreso: marzo-2007
Mensajes: 27
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: de un archivo a una base de datos

Me dejaste la curiosidad. Ademas quisiera ayudarte en lo que propones, pero talves debes de explicarlo mejor.

Espero tu respuesta.


Atte.


David
  #5 (permalink)  
Antiguo 20/02/2008, 23:27
 
Fecha de Ingreso: febrero-2008
Mensajes: 3
Antigüedad: 16 años, 9 meses
Puntos: 0
de un archivo a una base de datos

Mira agradezco que te hayas interesado por este tema... mira voy a poner el código:
esta en java asi que espero y le medio entiendan a este lenguaje de todas formas no esta muy complicado....
/**
*
* @author Jose Luis Cetina Avila
*/
public class ArchivoDBF {

public boolean crearArchivoDBFVacio()
{
JOptionPane.showMessageDialog(null,"El programa esta a punto de crear un archivo llamado cetAlumDBF.dbf\nen la dirección: C:\\");

try {
File archivo = new File("c:\\cetAlumDBF.dbf");
if(archivo.exists())
{
int opcion=JOptionPane.showConfirmDialog(null,"Este archivo ya existe.\n¿Desea sobreescribirlo?","",JOptionPane.YES_NO_OPTION);
if(opcion==0)
{
archivo.createNewFile();
if(escribirRegistroDeCabeceraEnElArchivo(archivo.g etAbsolutePath())==true)
{
JOptionPane.showMessageDialog(null,"El archivo se ha creado correctamente en C:\\\nLa tabla tiene las siguientes columnas\nmatricula(cadena),nombre(cadena) y calificacion(numerico)");
return true;
}
else
{
JOptionPane.showMessageDialog(null,"El archivo NO se ha creado");
}

}
else
JOptionPane.showMessageDialog(null,"El archivo NO se ha creado");
}
else
{
archivo.createNewFile();
if(escribirRegistroDeCabeceraEnElArchivo(archivo.g etAbsolutePath())==true)
{
JOptionPane.showMessageDialog(null,"El archivo se ha creado correctamente en C:\\\nLa tabla tiene las siguientes columnas\nmatricula(cadena),nombre(cadena) y calificacion(numerico)");
return true;
}
else
{
JOptionPane.showMessageDialog(null,"El archivo NO se ha creado");
}
}
return false;
} catch (IOException ex) {
JOptionPane.showMessageDialog(null,"No se pudo crear el archivo en C:\\ \n"+ex.toString());
return false; }
}


/**
* <p>Este metodo es el encargado de crear las columnas de la cabecera del archivo DBF,
* se crean
*
* </p>
*
* @param path
* @return
*/

private boolean escribirRegistroDeCabeceraEnElArchivo(String direccionDelArchivo)
{
try {
JDBField columna1 = new JDBField("matricula", 'C', 10, 0);
JDBField columna2 = new JDBField("nombre", 'C', 10, 0);
JDBField columna3 = new JDBField("calif", 'N', 3, 0);
JDBField[] columnas = {columna1, columna2, columna3};
DBFWriter escribir = new DBFWriter(direccionDelArchivo, columnas);
escribir.close();
return true;
} catch (JDBFException ex) {
JOptionPane.showMessageDialog(null,"No se pudo crear el archivo debido a que\nNo se pudo escribir el registro de encabezado del archivo DBF\nError al crear las columnas\n"+ex.toString());
return false;
}

}



/**
* Metodo que abre el DBF para su escritura
* @param nombreDelArchivo String
* @param ajdbfield JDBField[]
* @throws JDBFException
*/
public DBFWriter(String nombreDelArchivo, JDBField ajdbfield[]) throws JDBFException {
stream = null;
recCount = 0;
fields = null;
fileName = null;
dbfEncoding = null;
fileName = nombreDelArchivo;
try {
init(new FileOutputStream(nombreDelArchivo), ajdbfield);
}
catch (FileNotFoundException filenotfoundexception) {
throw new JDBFException(filenotfoundexception);
}
}

/**
* Metodo que inicializa la escritura en el archivo
* @param outputstream OutputStream
* @param ajdbfield JDBField[]
* @throws JDBFException
*/
private void init(OutputStream outputstream, JDBField ajdbfield[]) throws JDBFException {
fields = ajdbfield;
try {
stream = new BufferedOutputStream(outputstream);
writeHeader();
for (int i = 0; i < ajdbfield.length; i++)
writeFieldHeader(ajdbfield[i]);

stream.write(13);
stream.flush();
}
catch (Exception exception) {
throw new JDBFException(exception);
}
}




/**
* Metodo que escribe la cabecera del .dbf
* @throws IOException
*/
private void writeHeader() throws IOException {
byte abyte0[] = new byte[16];
abyte0[0] = 3;
Calendar calendar = Calendar.getInstance();
abyte0[1] = (byte)(calendar.get(1) - 1900);
abyte0[2] = (byte)calendar.get(2);
abyte0[3] = (byte)calendar.get(5);
abyte0[4] = 0;
abyte0[5] = 0;
abyte0[6] = 0;
abyte0[7] = 0;
int i = (fields.length + 1) * 32 + 1;
abyte0[8] = (byte)(i % 256);
abyte0[9] = (byte)(i / 256);
int j = 1;
for (int k = 0; k < fields.length; k++)
j += fields[k].getLength();

abyte0[10] = (byte)(j % 256);
abyte0[11] = (byte)(j / 256);
abyte0[12] = 0;
abyte0[13] = 0;
abyte0[14] = 0;
abyte0[15] = 0;

for(int k=0;k<abyte0.length;k++)
{
System.out.println(abyte0[k]);
}

stream.write(abyte0, 0, abyte0.length);
for (int l = 0; l < 16; l++)
abyte0[l] = 0;

stream.write(abyte0, 0, abyte0.length);

}








/**
* Metodo que escribe la cabecera de un campo del .dbf
* @param jdbfield JDBField
* @throws IOException
*/
private void writeFieldHeader(JDBField jdbfield) throws IOException {
byte abyte0[] = new byte[16];
String s = jdbfield.getName();
int i = s.length();
if (i > 10)
i = 10;
for (int j = 0; j < i; j++)
abyte0[j] = (byte)s.charAt(j);

for (int k = i; k <= 10; k++)
abyte0[k] = 0;

abyte0[11] = (byte)jdbfield.getType();
abyte0[12] = 0;
abyte0[13] = 0;
abyte0[14] = 0;
abyte0[15] = 0;
stream.write(abyte0, 0, abyte0.length);
for (int l = 0; l < 16; l++)
abyte0[l] = 0;

abyte0[0] = (byte)jdbfield.getLength();
abyte0[1] = (byte)jdbfield.getDecimalCount();
stream.write(abyte0, 0, abyte0.length);
}
cualquier archivo puede ser leido por un manejador solo con crear la cabecera del programa...
de todas formas subire un link donde hay un poco de lectura para su mejor comprensión....
  #6 (permalink)  
Antiguo 22/02/2008, 07:59
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Re: de un archivo a una base de datos

Bien, lo que estás haciendo es emular una BD en un fichero, pero de ahi a que este archivo sea leido por cualquier gestor hay un abismo.

Salu2
  #7 (permalink)  
Antiguo 24/02/2008, 14:27
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Re: de un archivo a una base de datos

Trasladado de BD a Java. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:44.