Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - bash

#11
Gracias, ahora bien segun he visto el ID  de una tabla se puede usar como indice(claro sabiendo que algunos dbms ofrecen algo que funciona con indexer) entonces este idCliente quiero que se autoincremente, hasta ese punto todo bien , pero que tal que quiera poblar varias tablas que tiene una relacion de 1 a muchos siendo IDCliente la foreign key , que se autoincremente , no se si me explico bien , para ver si soy mas claro:

tengo una fila de cliente

IDCliente   | NombreCliente
1             |  pepito

si de una aplicacion esta quiere ingresar varias filas de la tabla de Datoscliente como lo podria hacer , sabiendo que cuando hagamos insert  en clientes el unico dato que insertaremos nosotros sera solo el nombreCliente? 

gracias de antemano.

#12
Bases de Datos / insertar en varias tablas fk y pk
1 Diciembre 2016, 03:59 AM
un saludo a tod@s en el foro!!

soy nuevo en esto de base de datos ,y quiero entender algo, le explico tengo varias tablas , normalizadas y como es entendible hay una relaccion donde una de las columna de la tabla es una llave foranea de otra tabla ,entonces me gustaria ver un ejemplo de como puedo hacer un insert en ambas tablas ejemplo...


tabla cliente ( idcliente, nombre....)
tabla datoscliente ( idcliente fk, direccion,...)

esa seria mi tabla de prueba quisiera insertar datos en ambas tablas ,como podria hacerlo??? 
#13
si, es cierto con hacer g++ main.cpp -o app.exe  estaria bien pero cuando lo paso a otra computadora que trabaja en la misma arquitectura de computadora , me pone ese mensaje a  parte
si muevo el ejecutable a otra carpeta y reinicio la computadora me hace mencion que para ejecutrar necesitas unas dll en windows , estas dll estan dentro del folder bin en mingw,
#14
gracias , el tercer punto es el mas extrano , por que empese a utilizar Eclipse cree un proyecto ,compila bien y se ejecuta , pero desde que paso a solo usar makefile me da error.


y mi maquina es 64 bit ,pero las librerias son de 32 bit y cuando compila en eclipse corren bien


[edit]
lo que me gustaria entender es como poner orden al compilador para poder hacer deployment en produccion?
#15
Buenas a todos!!

tengo como siempre un par de preguntas :

1- estoy tratando de linkear una libreria estatica (.a) desde una ruta alternativa al path que tiene el compilador por defecto y si siempre me dice que no encuentra la libreria,
estoy usando GCC segun el manual pasando el path con la opcion -LC eso esta resuelto pero no es asi.

2- estoy tratando de utilizar la libreria .a pero sin el prefijo lib, segun varias fuentes en internet pasando -l:<Nombre_de_mi_libreira>.a eso deberia estar resuelta pero no, tambien puede ser que el problema dependa del punto 1.


quite todas las dependencias de la libreria solamente para probar la aplicacion y este seria le siguiente punto.


3-estoy tratando de hacer una prueba fuera de la maquina que tengo en desarrollo y cuando trato de correr la aplicacion ya creada , me sale un msg que dice, que la version de la aplicacion no es compatible con la version de windows que estoy utilizando, que verifique si necesito una version de 32 o 64 bit de la aplicacion y contacte al que publica la aplicacion.


agradezco por adelantado.

#16
un Saludo a Todos !!

tengo un incovenienten , les cuento estoy creado una clase para que me haga de manager con las bases de datos es decir que me cree la conexion , que ejecutes los query o  alguna actulizacion y luego cierre la conexion , el siguiente incoveniente es el que tengo , mi clase se conecta bien a la base de datos (estoy usando Auntenticacion )si fallo me da error y luego si trato ingresar con un usuario valido como quiera me da la misma excepcion(rechanzando la conexion ), estoy usando Derby pero supongo que es problema de programacion, la verdad estoy perdido. dejare el codigo a ver si me pueden hechar una mano o consejo

Código (java) [Seleccionar]


public class RockPosDBManager
{
private boolean debugEnable;
private int     engine;
private int     typeOfConn;


private String  Embeddeddriver    = "org.apache.derby.jdbc.EmbeddedDriver";
private String  Clientdriver      = "org.apache.derby.jdbc.ClientDriver";
private String  mySQLClientDriver = "com.mysql.jdbc.Driver";

private String  DerbyServer   = "jdbc:derby://localhost:1527/";
private String  DerbyNoServer = "jdbc:derby:/";
private String  MySQLServer   = "jdbc:mysql://localhost:3306/";


private String  DBName;
private String  UserName;
private String  password;

 
private String finalConnectionString;
private String finalDriver;
private boolean    Authentication;


private boolean    create;
private Connection connection;
private boolean    isConnected;


/**
* @function Print
* @brief  this function Print Information on terminal console if the Debug Flag is enable.
* @param String - this String is the value that will be print onto the screen
* */
private void Print(String templ){
if( debugEnable == false) return;
if( templ != null )
{
//System.out.printf("DEBUG :  %s\n", templ );
}
}


/**
* @function Print
* @brief  this constructor will set the current Engine, kind of connection, we have  avaliable Derby engine and Mysql .
* @param  int sqlEngine =type of Engine rockPosClient = server, embedded or Client
* @see  RockPosDBEngine &  RockPosTypeConn
* */
public RockPosDBManager(int sqlEngine , int rockposClient, boolean created ){
this.engine     = sqlEngine;
   this.typeOfConn = rockposClient;
   this.debugEnable     = false;
   this.isConnected = false;
   this.create = created;
}

/**
* @function setDebugVerbose
* @brief  this function will turn on the Debug Flag for Terminal.
* @param  none
* @see  
* */
public void setDebugVerbose(boolean e){
debugEnable=e;
}

/**
* @function isConnectedIntoDatabase
* @brief  this Function Verify if the databe is connected;
* @param  none
* @see  
* */
public boolean isConnectedIntoDatabase(){
return this.isConnected;
}

/**
* @function SetDBNameConn
* @brief  
* @param  
* @see  
* */
public void SetDBNameConn(String DBname){
    try{
    if(DBname == null)
    throw new Exception("DB name Is null.");
   
    this.DBName = DBname;
    Print("DB name is : "+ DBName);
   
   
    switch(engine){
   
    case RockPosDBEngine.SQL_DERBY:
     Print("ENGINE SQL_DERBY");
    switch(typeOfConn)
    {
    case RockPosTypeConn.ROCKPOS_CLIENT:
     Print("Type Of Connection  ROCKPOS_CLIENT");
      finalConnectionString = DerbyServer   + this.DBName;
      finalDriver = Clientdriver;
      break;
    case RockPosTypeConn.ROCKPOS_EMBEDDED:
      Print("Type Of Connection  ROCKPOS_EMBEDDED");
      finalConnectionString = DerbyNoServer  + this.DBName;
      finalDriver = Embeddeddriver ;
      break;
    case RockPosTypeConn.ROCKPOS_SERVER:
      Print("Type Of Connection  ROCKPOS_SERVER");
      finalConnectionString = DerbyServer   + this.DBName;
      finalDriver = Clientdriver;
      break;
    }
    break;
   
   
    case RockPosDBEngine.SQL_MYSQL:
    Print("ENGINE SQL_MYSQL");
   
   
    switch(typeOfConn)
    {
    case RockPosTypeConn.ROCKPOS_CLIENT:
    ///   Print("Type Of Connection  ROCKPOS_CLIENT");
      finalConnectionString = MySQLServer   + this.DBName;
      finalDriver = mySQLClientDriver;
      break;
    case RockPosTypeConn.ROCKPOS_EMBEDDED:
    ////  Print("Type Of Connection  ROCKPOS_EMBEDDED");
      Print("MySQL does not work in Embedded Mode yet.");
      finalDriver = mySQLClientDriver;
      break;
    case RockPosTypeConn.ROCKPOS_SERVER:
    ////  Print("Type Of Connection  ROCKPOS_SERVER");
      finalConnectionString = MySQLServer  + this.DBName;
      finalDriver = mySQLClientDriver;
      break;
    }
    break;
    }
     Print("Connection Driver is : "+ finalDriver);
     Print("Connection String is  ===> "+ finalConnectionString);
    if(this.UserName != null && this.password != null)
    {
    Print("Authentication is  On.");
    Print("User name is =[ "+this.UserName+ " ] password = [ "+ this.password +"]");
    Authentication = true;
    }
    else
    {
     Print("Authentication is  On.");
     Print("No user name was provide.");
    Authentication = false;
   
    }

    }catch(Exception e)
    {
     e.printStackTrace();
    }
}

/**
* @function SetCredential
* @brief  
* @param  
* @see  
* */
public void SetCredential(String user, String pass){
  if(user != null)
  this.UserName = user;
  if(pass != null)
    this.password = pass;
}

public void RequireAuth(boolean auth){
this.Authentication = auth;
}



/**
* @function Connect
* @brief  
* @param  
* @see  
* */
public boolean Connect(){

this.connection = null;
try{
Class.forName(finalDriver);
}
catch(Exception e)
{
e.printStackTrace();

this.isConnected = false;
return this.isConnected ;
}

try{

String param;
  if(create == false)
  {
 
  param =  finalConnectionString +";user="+ this.UserName+";password="+ this.password;
 
  }
  else
  {
  param =  finalConnectionString +";create=true;user="+this.UserName+";password="+ this.password;
 
  }

   System.out.printf("Param to Server : %s", param);
   this.connection = DriverManager.getConnection(param);
                   if(this.connection.isValid(30)){
                    this.isConnected = true;
                    System.out.print("\nEsta Conectado.");
                   }
                   else{
                    this.isConnected = false;
                    System.out.print("\nno Esta Conectado.");
                   
                   }
                       
   
}
catch(SQLException e)
{
  int code = e.getErrorCode();
  e.printStackTrace();
  this.isConnected = false;
  return this.isConnected;
}

                   
     return this.isConnected;

}


public boolean Disconnect(){

  try {
    this.connection.close();
    } catch (SQLException e) {
   
     e.printStackTrace();
 return isConnected;
    }
    this.isConnected = false;
return isConnected;  
}









public boolean Execute(String sql){
///Print("Execute");
boolean res = true;
if(this.isConnected == false  )
{
  Print("theres is not Connection");
  return false;
}

PreparedStatement stmt   = null;
try
{
   stmt   =  this.connection.prepareStatement(sql);
   stmt.executeUpdate(sql);
}catch(Exception e){
e.printStackTrace();
Print("Error Executing that Query");
return false;
}
finally{
///Print("Execute Finally");
try {
stmt.close();

} catch (Exception e) {
       Print("Error closing Statement.");
}
}
return res;
}








public ResultSet Query(String sql){

if(this.isConnected == false  )
{
  Print("theres is not Connection");
  return null;
}

Statement stmt   = null;
ResultSet result = null;
try
{


this.connection.setAutoCommit(true);
   stmt   =  this.connection.createStatement();
   result = stmt.executeQuery(sql);
   if(result == null)
    Print("Result is null");
   
}catch(Exception e){
Print("Error Executing that Query");
}
try {
stmt.close();
} catch (Exception e) {
           Print("Error closing Statement.");
}
return result;
}


public void CloseConn(){
try {
this.connection.close();  
Print("Closing Connection");

} catch (Exception e) {
         Print("Error Closing Conection.");
}
this.isConnected= false;

}






}



algo que me falto ponerle es una prueba de lo que quiero hacer
Código (java) [Seleccionar]

RockPosDBManager rm = new RockPosDBManager(RockPosDBEngine.SQL_DERBY, RockPosTypeConn.ROCKPOS_CLIENT, true);
rm.SetDBNameConn(RockPosConstant.DB_PATH+"d1234f");
rm.SetCredential("dbmanager", "dbmanager");
boolean creado = rm.Connect();
if(creado == true)
System.out.println("prueba 1Creado");
else{
System.out.println("prueba 1 no Creado");

}
String sql = "CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\'derby.database.defaultConnectionMode\',\'noAccess\')";
creado = rm.Execute(sql);
if(creado == true)
System.out.println(" prueba 2 Se Ejecuto");
else{
System.out.println(" prueba 2 no sejecuto Creado");
   
}

rm.Disconnect();
rm.SetDBNameConn(RockPosConstant.DB_PATH+"d1234f");
rm.SetCredential("usuario2", "usuario2");
    creado = rm.Connect();
if(creado == true)
System.out.println("\n\n\n prueba 2 Creado\n");
else{
System.out.println("\n\n\n prueba 2 no Creado\n");
     
}
rm.Disconnect();
rm.SetCredential("dbmanager", "dbmanager");
    creado = rm.Connect();
if(creado == true)
System.out.println(" prueba 4 prueba pasada ");
else{
System.out.println("prueba 4 prueba no pasada");
    return;
}



#17
Buenas a todos !!

estoy actualmete aprendiendo a implementar una lista enlazada simple y me gustaria saber como es que los punteros estan trabajando de manerar interna para poder comunicarse, si es algo sencillo en teoria pero tengo una duda que ronda en mi cabeza hace un par de minutos, estoy siguiendo un tutorial y he entendido algunas cosas como que cada nodo (usando una estructura ) tieene un puntero a otro nodo que esta en una "lista" y al final de la lista hay uno que apunta a NULL y para este aproach estoy usando c++ y plantillas , le explico un poco como tengo mi codigo:

tengo una clase llamada List esta contiene una estructura Node que contiene el dato T y el link al sugiente elemento de la estructura .... ahora en la clase tengo 2 puntero first y curr
estos contienen el dato de la cabeza (Inicio de la estructura) y curr que contiene el frente de la estructura (front )  bien en la funcion siguiente

Código (cpp) [Seleccionar]


    void insert(T f)
    {
      Node<T> *temp= new Node<T>(f);
       if(first == NULL)
       {
       first= temp;
       curr = temp;
       }
       else
       {
       curr->next=temp;
       curr = temp;
       }
    }

el primer if esta bien  pero esta parte en else me hace perderme por ejemeplo
Código (cpp) [Seleccionar]

     void Print(){
    if(first == NULL) return;
         curr = first;
    while( curr  )
    {
    cout << "Value is : "<< curr->date<<endl;
    curr = curr->next;
    }
     }


donde curr = first
toma el first pero en la funcion Insert la que se lleno fue curr por que first tiene el link de first, alguien podria explicarme eso por favor.


Código (cpp) [Seleccionar]

#include <iostream>

#include <string.h>
using std::cout;
using std::string;

template<typename T>
class List
{
private:
template<class R>
struct Node{
R  date;
Node *next;
    Node(T t){
    date = t;
    next = NULL;
    }
};

Node<T> *first;
Node<T> *curr;

public:

List(){
first = NULL;
curr  = NULL;
}
    List(int d)
    {
    Node<T> *temp= new Node<T>(d);
    first = temp;
    curr  = temp;
    }

    void insert(T f)
    {
      Node<T> *temp= new Node<T>(f);
       if(first == NULL)
       {
       first= temp;
       curr = temp;
       }
       else
       {
       curr->next=temp;
       curr = temp;
       }
    }

     void Print(){
    if(first == NULL) return;
         curr = first;
    while( curr  )
    {
    cout << "Value is : "<< curr->date<<endl;
    curr = curr->next;
    }
     }


     void DeleteData(int data)
     {
          Node<T> *delPtr = NULL;
          Node<T> *temp   = first;
          curr            = first;

          while(curr != NULL && curr->date != data)
          {
          temp = curr;
          curr = curr->next;
          }

          if(curr == NULL)
          {
          cout << "this data is not in the list;";
          }
          else
          {
          delPtr = curr;
          curr = curr->next;
            temp->next = curr;
          if(delPtr == first)
          {
          first = first->next;
            temp  = NULL;
          }
               delete delPtr;
          }

     }




};



int main()
{
   List<int > ls;
   ls.insert(12);
   ls.insert(345);
   ls.insert(345);
   ls.DeleteData(345);
   ls.Print();
}


#18
buenas a todos
me gustaria compartiles algo que estoy haciendo para aprender mas sobre los punteros y los templates, antes que nada se que podria usar una lista enlazada  y podria evitarme lo de asignarle memoria dinamica con new pero quiero tenerla asi controlada con tamano fijo.
me gustaria sus opiniones.

Código (cpp) [Seleccionar]




template<class T>
class FixedArrayTemplate
{
private :
  int max_size;
  int size;
  T *Allocate_array;
  bool Correct;
public:
  FixedArrayTemplate(const unsigned int _size)
      {
          Correct = CreateMemoryArray(_size);
      }

  bool Push(T element)
  {
  if(size < max_size)
  {
  Allocate_array[size] = element;
  size++;
  return true;
  }
  else
  return false;

  }
     bool isCorrect(){return Correct;}

     void Clean()
     {
    if(this->Correct) delete[] this->Allocate_array;
    this->Allocate_array = NULL;
    this->Correct = false;
    size = 0;
    max_size = 0;
     }

      bool CreateMemoryArray(int _size)
      {
      if(this->isCorrect())
          this->Clean();

  max_size = _size;
  size     = 0;
  Allocate_array = new T[_size];
  if(Allocate_array == 0)
  {
Correct = false;
return Correct;
  }
  else
  {
  Correct = true;
  return Correct;
  }

      }


      T getElement(int e)
      {
      if(( e > 0 && e < size ) && e < this->max_size )
      {
    if(this->Correct)
      return this->Allocate_array[e - 1];
      }
      else
      {

    if(this->Correct)
      return this->Allocate_array[size - 1];
      }
      }



     ~FixedArrayTemplate()
     {
            Clean();
     }
};


int main()
{

   char *buffer1 ="buffer 1 ";
   char *buffer2 = "buffer 2";
   char *buffer3 = "buffer 3";
   char *buffer4 = "buffer 4";
   char *buffer5 = "buffer 5";
   FixedArrayTemplate<char *>miArray(20);
   if(miArray.isCorrect())
   {
   miArray.Push(buffer1);
   miArray.Push(buffer2);
   miArray.Push(buffer);
   miArray.Push(buffer3);
   miArray.Push(buffer4);
   miArray.Push(buffer5);
   cout << miArray.getElement(0)<<endl;
   cout << miArray.getElement(1)<<endl;
   cout << miArray.getElement(2)<<endl;
   cout << miArray.getElement(3)<<endl;
   cout << miArray.getElement(4)<<endl;
   cout << miArray.getElement(5)<<endl;
   cout << miArray.getElement(6)<<endl;
   }

}





gracias su opinion es muy importante.
#19
Programación C/C++ / Re: Cortar Cadena
2 Octubre 2016, 17:32 PM
hey es cierto .... waaoooo donde se fue mi logica , :D , la verdad es asi que deberia de ser. gracias.



ahora bien me encuentro en la necesidad de mutar el "string"


por ejemplo
Código (cpp) [Seleccionar]

/*
    @function :CutStr
    @param    :
    @author(s) : bash &  ivancea96(staff elhacker.net)
    @descripcion : Esta funcion corta una parte de la cadena pasada szChar
                         mandatorio: szChars debe ser creada usando new
*/
void CutStr(int beg, int end , char **szChars)
{
       int lenght = strlen(szCharsl);
char* cadenaFinal = new char[lenght - end + beg + 1];
memcpy(cadenaFinal, szChars, beg);
memcpy(cadenaFinal+beg, szChars+end, lenght - end);
cadenaFinal[lenght - end + beg] = '\0';

        ////aqui es mi duda.
        delete [] *szChars;
        *szChars = NULL;
        *szChars = new char[lenght - end + beg + 1];
        memcpy(*szChars, cadenaFinal, (lenght - end + beg));
      ////
       delete []cadenaFinal;
       cadenaFinal = NULL;
}




En esta parte del codigo me tira un bad_alloc y a veces solo sale pero me imagino que es por lo mismo.




Código (cpp) [Seleccionar]


int main()
{
    char *test = new char[32];
    memcpy(test, "hola que tal", 12);
    CutStr(0,  4,  *test);
    ///...
    delete[] test;
}






quizas mi codigo esta mal ,pero estoy haciendo esto para arm-11 en thumb mode. solo en caso de que le paresca extrano la pregunta. :D

gracias de antemano.
#20
Programación C/C++ / Re: Cortar Cadena
1 Octubre 2016, 14:32 PM
primero que todo gracias por las respuestas !!!

@Mafus : lo que quiero hacer es lo siguiente , te muestro con un ejemplo
Código (cpp) [Seleccionar]

 
char *cadena = "esta cadena  especial";

CutString(cadena, 5, 12);

cadena == "esta especial"



es decir elimine de la cadena los caracteres del 5 al 12 claro mi funcion esta dentro de una clase por eso uso this.


@ivancea96 estoy usando c++ pero lo que estoy haciendo es creando una clase "String" ademas como explique arriba quiero eliminarlo del string actual no deseo devolverlo, de hecho la funcion es de tipo int(edite mal esa parte cuand postea ) , cierto debi verificar que inlen sea diferente de "0" pero como siempre la estuve probando con una longitud mayor de 0 no me di cuenta de eso.


Código (cpp) [Seleccionar]

szBeg           = (char *)malloc(beg * sizeof(char ));
szEnd           = (char *)malloc(( inlen - end )* sizeof(char ));
szCharsCopy = (char *)malloc((beg + (inlen - end) + 1)* sizeof(char ));


///strncpy( szBeg, &this->szChars[0], beg);
///strncpy( szEnd, &this->szChars[end], inlen);
memcpy( szBeg, &this->szChars[0], beg);
       memcpy( szEnd, &this->szChars[end], inlen - end);


strncat( szCharsCopy, szBeg , strlen(szBeg));
strncat( szCharsCopy , szEnd, strlen(szEnd));
       szChasrsCopy[beg + (inlen - end))+1] = '\0';




dices algo asi ?
como me recomiendas tomar espacio una sola vez ?

gracias de nuevo por todo ;-) :laugh:

EDIT:


He mejorado el codigo , me gustaria saber su opinion acerca de este.

Código (cpp) [Seleccionar]

char * CutString(char *Chars, int beg_, int end_)
{
char *beg = (char *)malloc( beg_ * sizeof(char) );
char *end = (char *)malloc( (strlen(Chars) - end_) * sizeof(char) );

cout << beg_<<endl;
cout << end_<<endl;
memcpy(beg, &Chars[0], beg_);

if(( strlen(Chars)- end_) != 0)
    memcpy(end, &Chars[end_], strlen(Chars)-end_);
    else
        return beg;

    char *ret = (char *)malloc(((strlen(beg)+ strlen(end)) + 1 )*sizeof(char));

    if(ret == NULL)
    cout << "error buscando memoria\n";

    strcat(ret, beg);
    strcat(ret, end);

    ret[(strlen(beg)+ strlen(end))] = '\0';
    free(beg);
    free(end);
    return ret;
}




anteriormente le pasaba un arreglo gigante digas 20kb y la app terminaba con algun error en malloc pero ahora anda bien , pero me gustaria saber que opinan.