尝试使用Java DB创建表时出现语法错误

时间:2017-07-04 22:24:09

标签: java database

import java.sql.*;   // Needed for JDBC classes
public class StudentDB
{
    public static void main(String[] args)
    {
    final String DB_URL = "jdbc:derby:StudentDB;create=true";

    try{
        Connection conn = DriverManager.getConnection(DB_URL);

        dropTables(conn);

        buildMichaelTable(conn);

        buildEvanTable(conn);

        buildJeffTable(conn);

        conn.close();
    }
    catch (Exception ex)
    {
        System.out.println("ERROR: " + ex.getMessage());
    }
}

public static void dropTables(Connection conn)
{
    System.out.println("Checking for existing tables.");

    try
    {
        Statement stmt = conn.createStatement();

        try
        {
            stmt.execute("DROP TABLE Michael");
            System.out.println("Michael table dropped.");
        }
        catch(SQLException ex)
        {
        }

        try
        {
            stmt.execute("DROP TABLE Evan");
            System.out.println("Evan table dropped.");
        }
        catch(SQLException ex)
        {

        }
        try
        {
            stmt.execute("DROP TABLE Jeff");
            System.out.println("Jeff table dropped.");
        }
        catch(SQLException ex)
        {

        }

    }
    catch(SQLException ex)
    {
        System.out.println("ERROR: " + ex.getMessage());
        ex.printStackTrace();
    }
}
public static void buildMichaelTable(Connection conn)
{
    try
    {
        Statement stmt = conn.createStatement();

        stmt.execute("CREATE TABLE Michael (" +
                "MichaelName CHAR(25), " +
                "MichaelStudentID CHAR(10) NOT NULL PRIMARY KEY, " +
                "MichaelClasses CHAR(25) " +
                "MichaelStudentGrades CHAR(5) " +
                ")");

        stmt.execute("INSERT INTO Michael VALUES ( " +
                "'Michael Goldman', " +
                "'1216145', " +
                "'Programming II', " +
                "4.00 )");

        stmt.execute("INSERT INTO Michael VALUES ( " +
                "' '," +
                "' '," +
                "'Cyber Law', " +
                "3.45 )" );

        stmt.execute("INSERT INTO Michael VALUES ( " +
                "' '," +
                "' '," +
                "'Operating Systems', " +
                "2.90 )");

        System.out.println("Michael table created.");
    }
    catch (SQLException ex)
    {
        System.out.println("ERROR: " + ex.getMessage());
    }

    }
public static void buildEvanTable(Connection conn)
{
    try
    {
        Statement stmt = conn.createStatement();

        stmt.execute("CREATE TABLE Evan (" +
                "EvanName CHAR(25), " +
                "EvanStudentID CHAR(10) NOT NULL PRIMARY KEY, " +
                "EvanClasses CHAR(25) " +
                "EvanStudentGrades CHAR(5) " +
                ")");

        stmt.execute("INSERT INTO Evan VALUES ( " +
                "'Evan Bloom', " +
                "'1412179', " +
                "'Programming II', " +
                "3.45 )");

        stmt.execute("INSERT INTO Evan VALUES ( " +
                "' '," +
                "' '," +
                "'Cyber Law', " +
                "4.00 )");

        stmt.execute("INSERT INTO Evan VALUES ( " +
                "' '," +
                "' '," +
                "'Operating Systems', " +
                "2.90 )");

        System.out.println("Evan table created.");
    }
    catch (SQLException ex)
    {
        System.out.println("ERROR: " + ex.getMessage());
    }

    }
public static void buildJeffTable(Connection conn)
{
    try
    {
        Statement stmt = conn.createStatement();

        stmt.execute("CREATE TABLE Jeff (" +
                "JeffName CHAR(25), " +
                "JeffStudentID CHAR(10) NOT NULL PRIMARY KEY, " +
                "JeffClasses CHAR(25) " +
                "JeffStudentGrades CHAR(5) " +
                ")");

        stmt.execute("INSERT INTO Jeff VALUES ( " +
                "'Jeff Royer', " +
                "'1592179', " +
                "'Programming II', " +
                "2.95 )");

        stmt.execute("INSERT INTO Jeff VALUES ( " +
                "' '," +
                "' '," +
                "'Cyber Law', " +
                "1.72 )");

        stmt.execute("INSERT INTO Jeff VALUES ( " +
                "' '," +
                "' '," +
                "'Operating Systems', " +
                "2.87 )");

        System.out.println("Jeff table created.");
    }
    catch (SQLException ex)
    {
        System.out.println("ERROR: " + ex.getMessage());
    }

    }
}

这是我的第一篇文章,希望我能正确格式化。我正在尝试使用Java DB制作三个不同学生的三个表,但我一直在收到错误:

ERROR: Syntax error: Encountered "MichaelStudentGrades" at line 1, column 117.
ERROR: Syntax error: Encountered "EvanStudentGrades" at line 1, column 105.
ERROR: Syntax error: Encountered "JeffStudentGrades" at line 1, column 105.

我找不到语法错误,请帮助任何指导,非常感谢。

1 个答案:

答案 0 :(得分:0)

MichaelClasses CHAR(25)之后的SQL代码中缺少逗号:

stmt.execute("CREATE TABLE Michael (" +
                "MichaelName CHAR(25), " +
                "MichaelStudentID CHAR(10) NOT NULL PRIMARY KEY, " +
                "MichaelClasses CHAR(25) " +
                "MichaelStudentGrades CHAR(5) " +
                ")");