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)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Crear base de datos desde java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear base de datos desde java  (Leído 1,081 veces)
k3ym4n

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Crear base de datos desde java
« en: 24 Marzo 2018, 10:51 am »

En resumen:
Me da un error de sintaxis en el script de sql, pero al pasarlo por mysql en el xampp , el codigo en sql se ejecuta sin ningun problema.

En elcodigo para conectar con la base de datos , vereis que no hago referencia a ninguna DB.He probado a usar las que viene por defecto y luego ejecutar el script de SQL.
Tambien he quitado espacios y saltos de linea, he visualizado en notepad++ si habia algun caracter  extraño dentro de los no visibles.
La verdad no se que pasa.
Pero esto es como el chiste: "Funciona!!!, porque?, no lo se . No funciona!! , porque?, no lo se"
Gracoias de antemano, por tan solo haber abierto el post.
Os pongo el codigo por si veis algun error que mi cerebro esta un poco frito:

Código:
CREATE DATABASE login;
USE login;
CREATE TABLE usuarios(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
nombre varchar (100),
apellidos varchar (100),
telefono varchar (40),
nick varchar (10),
password varchar(10),
nivel_acceso ENUM ('admin','user','query'));

MAIN:
Código:
import crear.db.java.Conectar;

public class Main {

    public static void main(String[] args) {

        Conectar conectarCrear = new Conectar();
            conectarCrear.importarQuery("G:\\MICROARTESGE\\PruebasMicroarte\\crearDBdesdejava\\DBlogin.sql");
    }
}

CREAR DB desde script en java.

Código:
package crear.db.java;

import java.io.*;
import java.sql.*;

public class Conectar {

    private String usuario,contrasena;
    private  static Connection conexion;

    public Conectar(){

        conectar();
    }


    private static void conectar(){

        conexion = null;

        try {
            String driver = "com.mysql.jdbc.Driver";
            Class.forName(driver);
            conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "");
            System.out.println("conectado con mysql");
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }


    public static String obtenContenidoFichero(File documento){
        String sCadena ;
        String retorno ="";

        if(!documento.exists()){
            return null;
        }

        try{

            BufferedReader bf = new BufferedReader(new FileReader(documento));
            System.out.println("leyendo script de la base de datos");
            while ((sCadena = bf.readLine()) != null) {
                retorno += sCadena;
            }

        }catch(FileNotFoundException fnfe){
            return null;
        }catch(IOException ioe){
            return null;
        }

        return retorno;
    }

    public static boolean importarQuery(String scriptSQL){
        String query = obtenContenidoFichero(new File(scriptSQL));
        System.out.println("importando query");
        return ejecutarScript(query);
    }

    private static boolean ejecutarScript(String query) {

        String scriptSQL = query;
        try {
            PreparedStatement statement = conexion.prepareStatement(scriptSQL);
            System.out.println("conexion para la query");
            statement.executeLargeUpdate();
            System.out.println("query ejecutada");
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return true;
    }

}

Código:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right
 syntax to use near '?CREATE DATABASE login;USE login;CREATE TABLE usuarios(id INTEGER UNSIGNED PRIMA' at line 1




En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 443



Ver Perfil WWW
Re: Crear base de datos desde java
« Respuesta #1 en: 28 Marzo 2018, 00:02 am »

Citar
?CREATE DATABASE login;USE login;CREATE TABLE usuarios(id INTEGER UNSIGNED PRIMA

Yo pienso que es porque no les estás pasando línea por línea, sino todo el fichero completo para que ejecute la sentencia.

Lo mejor es que metas línea por línea y para ello que mejor que hacerle un split(";") para crear el array e ir ejecutando cada elemento. De esa forma si hubiera alguna sentencia mal o no fuera compatible te mostraría la sentencia exacta que falla.

De nada  ::)


En línea

k3ym4n

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Crear base de datos desde java
« Respuesta #2 en: 29 Marzo 2018, 12:39 pm »

Muchas gracias ,ahora estoy con otra parte del proyecto, cuando lo pruebe te digo;
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
crear base de datos desde visual
Programación Visual Basic
CARRY-ON 1 1,779 Último mensaje 31 Octubre 2006, 00:24 am
por CeLaYa
Base para crear un instalador desde Java
Java
Leyer 5 5,146 Último mensaje 18 Julio 2010, 20:45 pm
por Leyer
listar, guardar en base datos un archivo desde java
Java
washington8277 4 2,887 Último mensaje 1 Febrero 2014, 14:48 pm
por washington8277
Como buscar en base de datos desde Java
Java
puntoBat 1 1,258 Último mensaje 24 Julio 2014, 04:12 am
por yesod
Resgitro de datos desde un jtable en java netbeans a base de datos mysql
Java
Larry16 1 1,347 Último mensaje 9 Junio 2016, 20:34 pm
por DIANA KARINA HM
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines