2017-03-29 7 views
-2

私はEclipseをXamppと併用しています。私は、サーバーに接続するデータベース、テーブルを作成し、いくつかの名前でそれを埋める必要があり、このコードは書かれています:EclipseのMySql構文エラー(java)

import java.sql.*; 

public class Database { 

    public static void main(String[] args) 
    { 
     String user = "root" , pass = "" , url = 
"jdbc:mysql://127.0.0.1:3306/"; 
     try 
     { 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
      Connection conn = DriverManager.getConnection(url, user, pass); 
      Statement stat = conn.createStatement(); 

      stat.execute("CREATE DATABASE IF NOT EXISTS Database"); 
      stat.execute("USE Database"); 

      stat.execute("DROP TABLE IF EXISTS Names"); 
      stat.execute("CREATE TABLE Names ("+ 
        "id BIGINT NOT NULL AUTO_INCREMENT," 
        + "fname VARCHAR(25)," 
        + "lname VARCHAR(25)," 
        + "PRIMARY KEY(id)" 
        + ")"); 

      stat.execute("INSERT INTO Names (fname , lname) VALUES"+"('Jan', 
'Kowalski'), (Ala', 'Kowalski'), ('James', 'Bobo')"); 

      ResultSet res = stat.executeQuery("SELECT * FROM Names WHERE 
lname = 'Kowalski'"); 
      while (res.next()) 
      { 
       System.out.println(res.getString("fname") + " " + 
res.getString("lname")); 
      } 
      System.out.println(""); 


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


    } 

} 

を、私は次のエラーを取得:私が見上げてみた

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 'Database' at line 1 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 
at com.mysql.jdbc.Util.getInstance(Util.java:408) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:943) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909) 
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527) 
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680) 
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2497) 
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2455) 
at com.mysql.jdbc.StatementImpl.executeInternal(StatementImpl.java:839) 
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:739) 
at Database.main(Database.java:14) 

をいくつかのドキュメントでは、私が逃したものがあるかどうかを見ていますが、何も見つかりませんでした。

+1

私は "データベース"はあなたが名前に使うことができないMySQLキーワードだと思います。 https://dev.mysql.com/doc/refman/5.7/en/keywords.html – prasanth

+1

「Ala」の隣に一重引用符がありません。ああ、どのようなprasanthは言った。 –

答えて

0

Database以外の名前のデータベースには、MySQLの予約語が必要です。

stat.execute("CREATE DATABASE IF NOT EXISTS MyDatabase"); 
stat.execute("USE MyDatabase"); 

MyDatabaseは、名前を付けたいものに置き換えてください。