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.
我无法找到一个语法错误,请帮助任何指导,不胜感激。
谢谢你,固定的错误,我也改变了studentgrades所有三个翻一番,但现在我得到错误:该声明被中止,因为它会在'MICHAEL'上定义的'SQL170704183307800'标识的唯一或主键约束或唯一索引中导致重复的键值。 –
在stackoverflow上,您应该询问有关您无法解决的细节的问题。你不应该扔一堆代码,并要求社区解决所有问题。我在代码中看到一个设计问题:为什么每个学生都有一张桌子?为所有学生提供单一表格更为常见。然后该表将包含一列studentName或类似的东西。您创建表格一次,然后插入每个学生的信息。 – anneb
关于语法错误:您应该仔细观察语法错误来自哪里。如果构建应用程序,则可能有语法错误:这些是Java语法错误。如果你运行应用程序并得到语法错误,那么它们可能是SQL语法错误。查看错误消息,并仔细查看有关重复键错误的SQL – anneb