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ú

Temas - k3ym4n

#1
Java / Crear base de datos desde java
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:


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:

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.


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;
    }

}



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