2017-07-04 84 views
0
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三种不同的学生的三个表,但我一直得到错误:语法尝试使用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. 

我无法找到一个语法错误,请帮助任何指导,不胜感激。

回答

0

,(逗号)在MichaelClasses CHAR后的SQL代码(25)丢失:

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

谢谢你,固定的错误,我也改变了studentgrades所有三个翻一番,但现在我得到错误:该声明被中止,因为它会在'MICHAEL'上定义的'SQL170704183307800'标识的唯一或主键约束或唯一索引中导致重复的键值。 –

+0

在stackoverflow上,您应该询问有关您无法解决的细节的问题。你不应该扔一堆代码,并要求社区解决所有问题。我在代码中看到一个设计问题:为什么每个学生都有一张桌子?为所有学生提供单一表格更为常见。然后该表将包含一列studentName或类似的东西。您创建表格一次,然后插入每个学生的信息。 – anneb

+0

关于语法错误:您应该仔细观察语法错误来自哪里。如果构建应用程序,则可能有语法错误:这些是Java语法错误。如果你运行应用程序并得到语法错误,那么它们可能是SQL语法错误。查看错误消息,并仔细查看有关重复键错误的SQL – anneb

相关问题