elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Temas
Páginas: [1]
1  Programación / .NET (C#, VB.NET, ASP) / Leer y escribir en archivo .mdb de access con C++ en: 8 Marzo 2013, 14:40 pm
Buenas tardes a todos, tengo un programa en C++ que prepara unos archivos y al final crea un listado de estos, el problema es que el ultimo paso que me falta es escribir los datos del listado en una de las tablas que se encuentra dentro de una base de datos .MDB con contraseña, creada en access.
He estado leyendo en algunos foros y paginas de microsoft que dependiendo del tipo de base de datos (sea ADO, ADO.NET, ODBC, OLE, etc) hay que anexar a la libreria del codigo C++ el controlador .dll para el tipo de base de datos; pero yo solo se que es un archivo .MDB y que se ha creado en access.

Por lo que he visto hay muchos tipos de bases de datos e incluso programas que las gestionan y que tienes que conectarte al programa para poder acceder a los datos y eso, pero lo que yo tengo es un simple archivo .MDB que quisiera poder abrir y escribir (Si, soy un cero a la izquierda en bases de datos).

Alguien podria darme alguna pista de como se hace?
Muchas gracias de antemano.


EI: juntando mensajes.


Hola, publico un poco mi avance por si a alguien le sirve.

Estoy haciendo un programa con windows forms en visual c++ 2008 y hasta ahora he conseguido abrir la bd con contraseña y crear una tabla desde mi programa.

Lo que hay que hacer es lo siguiente:

declarar al principio del programa principal (no se si esta bien dicho declarar):

using namespace System::Data::OleDb;

//Luego en el boton que quieras que realize la tarea:

OleDbConnection^ conexión = gcnew OleDbConnection();
conexión->ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=mibasedatos.MDB;Jet OLEDB:Database Password=contraseña";
conexión->Open();

//el provider depende del tipo de bd a la que te quieres conectar. Hay varios parametros que podemos pasar a ConnectionString (Provider, Data Source, Database Password), lo que no entiendo es por que en la pagina de microsoft solo mencionan un par de ellos y hay que buscarse la vida y ver cual es el que uno necesita. lo de Jet OLEDB:Database Password lo encontre de casualidad googleando.

//luego:
         
String^ strcomando = "CREATE TABLE tabla1 (nombres CHAR, apellidos CHAR);";

//el comando CREATE TABLE es de sql access que hay que utilizar y pasarselo al programa para que cree la tabla.
         
OleDbCommand^ comando = gcnew OleDbCommand(strcomando,conexión);
comando->ExecuteReader();

conexión->Close();


Ahora me falta seguir buscando los comandos de sql access para escribir o borrar cosas en las tablas de mi bd.
Un saludo.
2  Programación / Programación C/C++ / Crear fichero txt utf8 en C++ en: 10 Abril 2012, 21:04 pm
Buenas tardes a todos siguiendo con la practica de C++ acabo de ver ( http://c.conclase.net/librerias/index.php?ansifun=fopen#inicio ) que el comando  "fopen" no solo abre un archivo sino que también permite crearlo con la misma facilidad. Lo que no he visto es la opción de crearlo en formato utf8 (para compatibilidad con algunos programas de reconocer las tildes en el texto). Alguien sabe de algún comando que permita hacerlo?. Gracias de antemano. 
3  Programación / Programación C/C++ / Busqueda desde txt en C++ en: 3 Abril 2012, 17:10 pm
Buenas tardes a todos tengo un problema con un programa que lee desde un listado txt los nombres de unos archivos, luego llama a una funcion que intenta abrirlos uno a uno para considerar si existen o no.
El problema es que si escribo directamente el nombre del archivo en el programa lo encuentra, pero si lo lee desde el listado, lo mete en un string y se lo pasa a la función no lo hace. Alguna idea de donde puede estar el fallo?.

Gracias de antemano

El listado tiene esta forma:
Código:
arc_2012041
arc_2012042
arc_2012043
arc_2012044

y el programa es este:
Código:
#include <stdio.h>

//funcion de existencia
void existe(char archivo[60]);

//programa principal
int main ()
{
char archivo1[30];
char ruta[60];

FILE *listado;

listado = fopen("lista.txt", "r");
if (listado==NULL)
{
printf("No se encuentra el listado\n");
return 1;
}

while (fgets(archivo1, 30, listado)!=NULL)
{
sprintf(ruta,"D:\\carpeta\\%s",archivo1);
existe(ruta);
}

fclose(listado);
return 0;
}

//funcion de existencia
void existe(char archivo[60])
{
FILE *faux;

faux = fopen(archivo, "r");
if (faux==NULL)
printf("archivo no encontrado\n");
else
{
printf("archivo encontrado\n");
fclose(faux);
}
}
4  Programación / Scripting / Problema de memoria al ejecutar bat en: 20 Marzo 2012, 14:59 pm
Buenas tardes a todos, tengo un código en .bat que me crea una base de datos en formato xml.
El programa lee de un txt el listado (que consta de 10 campos separados por ";") de todos los archivos que deberían estar físicamente en el ordenador, va construyendo la base de datos con los archivos encontrados.
La base de datos que se genera al final consta de dos partes que uno al final.
El programa funciona al ejecutarlo la primera vez, pero cuando se ejecuta por segunda vez funciona por un momento y luego el ordenador muestra el mensaje de error: "windows no pudo guardar los datos en myarchivo, se perdieron los datos la posible causa de este error puede ser un error de hardware... intente guardar el archivo en otro sitio"
El ordenador se pone lento y las ventanas se muestran incompletas, se cuelga y tengo que desconectarlo para que se apague.
Creo que el problema podría ser que mi programa consume mucha memoria del sistema ya que si el listado txt es mas pequeño de alrededor de 1,000 lineas (y no como el primero de 30,000) el programa funciona bien, ademas si lo ejecuto con el listado grande, luego reinicio el ordenador y lo vuelvo a ejecutar, no da ningún fallo, también lo he ejecutado en otras maquina y siempre pasa lo mismo.
He estado viendo por allí un scrip para liberar memoria pero no me ha servido.
Por eso agradecería la ayuda de alguien que tenga experiencia con programas en .bat y de como gestiona la memoria, si al terminar un programa hay que liberar la memoria manualmente, aunque yo creo que eso debería gestionarlo el propio windows.

el código en cuestión es este:

Código
  1. ;echo off
  2. SETLOCAL  ENABLEDELAYEDEXPANSION
  3.  
  4. set /A conta=0
  5. set /A contb=0
  6.  
  7. echo a;^<?linea de cabecera?^>a; >> exi1_dat.txt
  8.  
  9. echo Reporte de creacion de BD > repo_bd.txt
  10. echo. >> repo_bd.txt
  11. echo Fecha y hora: %date% %time% >> repo_bd.txt
  12. echo. >> repo_bd.txt
  13.  
  14. for /F "tokens=1-10 delims=;" %%a in (dat.txt) do (
  15. if exist %%a (
  16.  
  17. set /A conta=!conta!+1
  18. set aut=%%b
  19. set tit=%%c
  20.  
  21. echo a; ^<primer dato="%%a"^>;a >> exi1_dat.txt
  22. echo a;  ^<cuarto a octavo dato=%%d %%e %%f %%g %%h /^>;a >> exi1_dat.txt
  23. echo a;  ^<decimo dato^> %%j ^<^>;a >> exi1_dat.txt
  24. echo a;  ^<noveno dato %%i /^>;a >> exi1_dat.txt
  25. echo a;  ^<otro dato primero=%%a /^>;a >> exi2_dat.txt
  26. ) else (
  27. echo %%a >> repo1_bd.txt
  28. set /A contb=!contb!+1
  29. )
  30. )
  31.  
  32. echo a; ^<linea final^>;a >> exi2_dat.txt
  33.  
  34. REM uniendo en uni.txt
  35.  
  36. for /F "tokens=1-3 delims=;" %%a in (exi1_dat.txt) do (
  37. REM echo %%b
  38. echo %%b>> uni.txt
  39. )
  40.  
  41. for /F "tokens=1-3 delims=;" %%a in (exi2_dat.txt) do (
  42. REM echo %%b
  43. echo %%b>> uni.txt
  44. )
  45.  
  46. ren uni.txt "Base de datos.xml"
  47.  
  48. del exi*.txt
  49.  
  50. echo. >> repo_bd.txt
  51. echo Numero de registros en BD:         !conta! >> repo_bd.txt
  52. echo. >> repo_bd.txt
  53. echo Numero de registros eliminados:    !contb! >> repo_bd.txt
  54. echo. >> repo_bd.txt
  55. echo registros eliminados: >> repo_bd.txt
  56.  
  57. copy repo_bd.txt + repo1_bd.txt reporte_bd.txt
  58.  
  59. echo.>> reporte_bd.txt
  60. echo Fin del reporte >> reporte_bd.txt
  61.  
  62. del repo_bd.txt
  63. del repo1_bd.txt
  64.  


Gracias de antemano.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines