1. Invitado La navidad llego a Cz, ¿Por que no vas a visitar la choza de Santa Cooz?
  2. Invitado ¿Puedes jugar sin repetir palabra?
    Descartar aviso
  3. Invitado ¿Por que no derribas a un que otro adversario con una bola de nieve?
    Descartar aviso
  4. Invitado Faltando tan solo unas pocas horas para navidad, alguien a quien no le gusta esta festividad, decidió sorprender a santa, raptarlo, atarlo y robar los regalos que llevaba consigo.
    Descartar aviso
  5. Invitado Esta vez el grinch esta en CemZoo y quiere tener su propio arbol para ponerlo en su casa pero no quiere cualquiera, tiene que ser creativo y unico el cual escogerá.
    Descartar aviso

Solucionado Duda Java-SQL

Tema en 'Asistencia CemZoonita' iniciado por Degote, 7 Junio 2013.

Cargando...
  1.  
    Degote

    Degote Creador del tema Cemzoonita

    Leo
    Saludos! bueno tengo el siguiente problema:

    Tengo un programa en Java que conecta a una base de datos SQL para hacer las gestiones necesarias.

    Entonces necesito saber como hacer lo siguiente:

    Cada vez que entro al programa, los archivos LDF y MDF se añadan al SQL de la máquina en la que el programa este si la base de datos no está importada aún.

    Todo esto automáticamente sin poner el código sp_... manualmente en SQL.

    Gracias de antemano :3

    Kentaurus --Alfredo-- WinniePooh Soma Cruz koneko nyan neo bahamut Darmak
     
  2.  
    Aoi

    Aoi Cemzoonita

    Libra
    Que onda Degote? Podrías postear el código donde haces la conexión a la BD? Tambien si puedes la del config.xml (donde se supone estarías declarando la BD a la que te conectas)
     
  3. si no mal entiendo, lo que quieres es que al ejecutar el programa, la base de datos se importe al sql del host (dicese maquina cualquiera xD), sin necesidad de importarlo manualmente... creo, no es cierto?..... yo no he hecho eso por ahora asi que no te podría ayudar xD, igual buscaré y si encuentro algo te digo ;3 por ahora me quedo como vidente (el que ve todo de la discucion para aprender xD)
     
    • Me gusta Me gusta x 1
  4.  
    neo bahamut

    neo bahamut Cemzoonita

    Escorpión

    Te ayudaría pero mi fuerte son las Telecomunicaciones y la seguridad informática. Programación la vi hace años en la universidad, y siendo sincero, no recuerdo muy bien. Pero igual buscaré a ver que encuentro y se me refresca algo la memoria, por que estoy seguro que en un proyecto final, realicé una conexión similar.
     
    • Me gusta Me gusta x 1
  5. Yo este año he dado Bases de Datos en SQL, pero las cosas más básicas: consultas, disparadores, vistas, tablas... Nada de ese tipo de conexiones :(
     
    • Me gusta Me gusta x 1
  6.  
    WinniePooh

    WinniePooh Cemzoonita

    Capricornio
    Yo la verdad no entiendo tu duda porque no soy de sqlserver, pero sin embargo también tengo preguntas para ti:

    *Puedes postear tu codigo de conexion a la BD. ?
    *Usas algun driver de conexion ?
    *Como se hace este proceos manualmente, es decir por medio del command prompt o por medio de lenguaje SQL?
     
    • Me gusta Me gusta x 1
  7.  
    Aoi

    Aoi Cemzoonita

    Libra

    Hasta donde tengo entendido (porque me dedico más a arquitectura Android que para J2EE), se necesita lo que es el driver(incluye codigo en java para mandarlo a llamar) y también la declaración en el config.xml. De aquí podríamos empezar algo, pero ahorita, con nada de esa información, es una pregunta muy ambigua o_O
     
    • Me gusta Me gusta x 1
  8.  
    Velli

    Velli Cemzoonita

    Géminis
    Lo que quiere Degote básicamente es, poder abrir un programa creado y con una base de datos en otro PC, que se pueda instalar de manera automática todas las tablas y campos. Algo así. Él lo explicará mejor, pero necesitamos "importar" ese proyecto a otro PC y que éste pueda responder.

    Y claro, es SQL y no MySQL.
     
  9.  
    Aoi

    Aoi Cemzoonita

    Libra
    Eso suena a que necesitaría crear un webservice (si es remoto) que le traiga el query a ejecutar (en este caso el create table y los insert necesarios, que se supone también se pueden extrar a partir de una BD preestablecida).
    Y si es local, pues que lo importe con el drive y el config.xml, lo demas es casi lo mismo. Pero necesitamos detalles xD
     
  10.  
    WinniePooh

    WinniePooh Cemzoonita

    Capricornio
    Si, obviamente, pero me refiero al tipo de driver que usa :P. Y no no necesitas un config.xml en este caso
     
  11.  
    neo bahamut

    neo bahamut Cemzoonita

    Escorpión
    Este es un link interesante donde se utiliza el driver JDBC para comunicarse con un SQL Server. Podría serte de alguna ayuda:

     
    • Me gusta Me gusta x 2
  12.  
    Aoi

    Aoi Cemzoonita

    Libra
    No se si no sea necesario, pero en la mayoría de empresas que he ido, ahi guardan la dirección de la bd, usuario y contraseña. Debe ser por eso de las "mejores prácticas" para seguridad y asdfghj...

    Por otro lado, no sería mas facil que encontrara la respuesta en StackOverflow que aqui? xD
     

  13. Oh, yo necesitaba conectarme a la Base de Datos que había creado en los ordenadores de la Universidad desde mi casa, aunque en mi caso lo tuve fácil, porque nuestra Uni cuenta con un "Aula Virtual" con algunas aplicaciones y programas de esos ordenadores, sólo tuve que conectarme al Aula Virtual, y desde ahí abrí el SQL+ y acceder a la Base de Datos. Pero claro, me imagino que vuestro caso es diferente :(
     
  14.  
    neo bahamut

    neo bahamut Cemzoonita

    Escorpión

    Es que una cosa es crear la BD desde el mismo MySQL o SQL Server u otro motor de BD que se use...a manipular una BD con un código fuente totalmente independiente a través de algún lenguaje de programación.

    Pero el mundo de BD es muy interesante (y muy buen pago xD).
     
    • Me gusta Me gusta x 1
  15.  
    Aoi

    Aoi Cemzoonita

    Libra
    Pero a la hora que te toca hacer guardia por migración de servidores... :( oh god, why?
     
  16.  
    WinniePooh

    WinniePooh Cemzoonita

    Capricornio


    Jajaja no.
     
  17.  
    Velli

    Velli Cemzoonita

    Géminis
    Mmm. ¿Más detalles?
    Básicamente tenemos un programa en java que conecta a una BD. Ésta está instalada en el mismo ordenador donde administramos el archivo, por lo tanto, no hay ningún problema hasta aquí.
    Pero entonces, tendremos que mover el archivo a otro ordenador (el del profesor), para básicamente, enseñarle el proyecto.
    Nuestra duda es, como hacer para abrir dicho programa (con su base de datos correspondiente) sin tener que instalar nada MANUALMENTE en ese PC.

    Tenemos la opción sucia (y última, en caso de no encontrar nada) de coger los archivos SQL .ldf y .mdf y agregarlos al ordenador del profesor. Con una línea de código como dijo mi compañero Degote (sp_attach_db etc..) lo podríamos agregar, pero no queremos que sea así.

    Lo ideal sería, que al abrir el programa ya se viera bonito y no tuviéramos que hacer nada manualmente.
     
    • Me gusta Me gusta x 2
  18.  
    Aoi

    Aoi Cemzoonita

    Libra
    OK OK, eso ya cuadra mejor :O... lo que se puede hacer, es primero sacar las instrucciones que haga un backup de la base de datos (es decir: que cuando lo coloques en un SP y lo corras, te cree la bd con todo y datos, indices, vistas, etc...), esta instrucción varia dependiendo de la versión que tenga de SQL, así que es investigarle un poco.

    Ya teniendo esto, puede en código pedirle al sistema que, al crearse, ejecute este sp. Aqui hay un link de utilidad para esto:
     
    • Me gusta Me gusta x 1
  19.  
    Degote

    Degote Creador del tema Cemzoonita

    Leo
    Aquí la conexión a la BBDD:

    Código:
    public static Connection establecerConexion() { //conectadmos a la bbdd
     
    con1 = null;
    String url = "jdbc:sqlserver://localhost;databaseName=GestionAlumnos;"; //añadimos a url el acceso
     
    try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // libreria
    con1 = DriverManager.getConnection(url, "sa", "stucom" ); //usamos el string url y decimos los datos como usu y pass de la base de datos
     
    }
    catch(Exception e) {
    System.out.println("No se pudo conectar a la base de datos " + e); //si no conecta saldrá este mensaje
    }
    return con1; //devolvemos connection con los datos totales.
    }
    
    Bueno el único "driver" son las librerias de SQL para java.

    Pues yo se importar bbdd a sql desde Master con comando sql.
    El código SQL que importa es el siguiente:

    sp_attach_db 'empresa' , 'c:\BBDD\MIBASE.MDF' , 'C:\MIBASE_LOG.LDF'

    Necesitaría alguna forma de que este código se ejecutase automáticamente en sql sin yo hacer nada.


    La cosa está en que yo tengo los archivos ldf y mdf en mi pc ok? entonces nuestro maldito profesor quiere que el viernes que viene pongamos el .jar en su pc y al ejecutarlo los archivos que tenemos de la bbdd se añadan automáticamente a su sql.

    La clave sería usar MySql y con un servidor cualquiera hacer una conexión online pero es tarde xD
     
  20.  
    Thalyssien

    Thalyssien Cemzoonita

    Sagitario
    La verdad que yo he encontrado alguna cosita por google pero estoy en fase de probar y tal!
    Aunque creo que antes de rellenar tablas habría que crear la BBDD para luego ejecutar los archivos y crear y rellenar las tablas.


    Como bien se ha dicho hay que usar un JDBC de SQL, pero eso ya se usa, el problema reside en que no sabemos que cadena/comando/accion se requiere para crear las BBDD, tablas, etc.

    Algunos habéis hablado de "config.xml". Lamento decir que no usamos ese lenguaje en las clases de JAVA ni en el programa. (Hablo en plural porque también estoy haciendo un proyecto)

    Por otra parte, y que es lo más lógico creo yo, en un programa NUNCA hay que poner para instalar las BBDD ni las tablas ni nada.
    Si el usuario no tiene el SQL no lo puede utilizar? Eso no se ha visto. Lo normal es hacer un host dedicado que tenga la BBDD con sus tablas y toda la info necesaria, y desde el JAVA acceder a esa base de datos.

    Creo que es lo más fácil y lógico, ya que en una empresa no vas a poner a los 500 empleados que haya 500 bases de datos y 500 SQL. Usan un servidor y todos acceden a él.

    Resumiendo, cuando haces las conexiones, en el DriverManager en vez de poner "jdbc:sqlserver://localhost;databaseName=nombrebbdd"; pones --> jdbc:sqlserver://IP:puerto;databaseName=nombrebbdd;

    Lógicamente para acceder deberá estar abierto el host, y con el router correctamente configurado con una DMZ.Ale...a JUGAAR! :D
     
    • Me gusta Me gusta x 3
  21.  
    WinniePooh

    WinniePooh Cemzoonita

    Capricornio
    Estos archivos son texto puro ?
     
  22.  
    neo bahamut

    neo bahamut Cemzoonita

    Escorpión

    Para este tipo de conexiones se utiliza el JDBC, tal como lo dijo Thalyssien, con la IP + puerto, lográs establecer la conexión...las siguientes líneas de código serán netamente manipulación de la BD.
     
    • Me gusta Me gusta x 2
  23.  
    Degote

    Degote Creador del tema Cemzoonita

    Leo
    Xiiiii
     
  24.  
    Degote

    Degote Creador del tema Cemzoonita

    Leo
    Thalyssien nuestro problema es diferente. Tu tienes scripts y asdhewqf nosotros no es ese caso. Solo tenemos que añadir los archivos de la BBDD y listos. Los datos ya están introducidos.
     
  25.  
    WinniePooh

    WinniePooh Cemzoonita

    Capricornio
    Neo tiene toda la razon. Sin embargo, tendras que utilizar variables para especificar las rutas de los archivos. La clase file puede servir.
     
    • Me gusta Me gusta x 1
  26.  
    Degote

    Degote Creador del tema Cemzoonita

    Leo
    Pero entonces tendría que tener un pc remoto con esa bbdd.

    Es lo que "quería" hacer. Un pc con esto, puerto NAT con ip fija y listos.
     
  27.  
    neo bahamut

    neo bahamut Cemzoonita

    Escorpión

    Esto también puede ayudar. Pero para mí, sería mas cómodo, montar un MySQL en algún Linux, y con esa clase, invocar la BD y crearla desde 0, todo a través del código JAVA.
     
    • Me gusta Me gusta x 1
  28.  
    Degote

    Degote Creador del tema Cemzoonita

    Leo
    Lo estavamos pensando realmente. MySql es mucho más cómodo... umm

    Gracias por vuestra ayuda chicos!

    Me mirare los links proporcionados y a ver si consigo algo :3 :love:
     
  29.  
    WinniePooh

    WinniePooh Cemzoonita

    Capricornio
    Bueno pero no es el caso.

    Yo aun no entiendo muy bien.

    Yo lo que veo es esto, corriganme:

    1. Necesito logearme con superuser al gestor de SQLSERVER.
    2. Con este usuario necesito crear una BD apartir de dos archivos.
    3. La sentencia se utiliza dentro del gestor.
     
  30.  
    Degote

    Degote Creador del tema Cemzoonita

    Leo
    Exacto! todo esto automáticamente al hacer un doble click en el ejecutable java.
     

Comparte esta página