我正在尝试使用JavaDerbyEmbeddedDriver创建一个表,但我没有';我不明白这些错误是什么意思?

我正在尝试使用JavaDerbyEmbeddedDriver创建一个表,但我没有';我不明白这些错误是什么意思?,java,runtime-error,derby,embedded-database,Java,Runtime Error,Derby,Embedded Database,错误: 代码: 这段代码中有许多错误 在Create Table语句中忽略“,” 无法使用“user”,因为它是保留字 设置列20的长度,然后尝试插入大于该长度的数据 使用了表中不存在的错误列名 我也有同样的问题。当我将表名从user更改为User1时,我的问题得到了解决。User是一个保留关键字,因此它将在Derby中抛出错误,但在MySql workbench上它可以正常工作,因为它使用“”作为转义序列 user是保留字。请尝试其他名称,例如,users我现在尝试了userLocal,它说用

错误:

代码:


这段代码中有许多错误

  • 在Create Table语句中忽略“,”

  • 无法使用“user”,因为它是保留字

  • 设置列20的长度,然后尝试插入大于该长度的数据

  • 使用了表中不存在的错误列名


  • 我也有同样的问题。当我将表名从user更改为User1时,我的问题得到了解决。User是一个保留关键字,因此它将在Derby中抛出错误,但在MySql workbench上它可以正常工作,因为它使用“”作为转义序列

    user
    是保留字。请尝试其他名称,例如,
    users
    我现在尝试了userLocal,它说用户名是问题所在,将其更改为userNameLocal,但没有解决问题。您在
    userName
    列前缺少逗号。真的:在将语句放入java代码之前,在SQL客户机中运行语句。我已经修复了逗号问题,但仍然存在相同的错误
    run:
    Loaded the appropriate driver
    Created and connected to database localDB2
    
    ----- SQLException -----
      SQL State:  42X01
      Error Code: 30000
      Message:    Syntax error: Encountered "user" at line 1, column 14.
    
    ___ DBTest completed ___
    java.sql.SQLSyntaxErrorException: Syntax error: Encountered "user" at line 1, column 14.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
        at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
        at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
        at localDataBase.start(localDataBase.java:56)
        at localDataBase.main(localDataBase.java:17)
    Caused by: java.sql.SQLException: Syntax error: Encountered "user" at line 1, column 14.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
        ... 10 more
    Caused by: ERROR 42X01: Syntax error: Encountered "user" at line 1, column 14.
        at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
        at org.apache.derby.impl.sql.compile.ParserImpl.parseStatement(Unknown Source)
        at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
        at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
        at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
        ... 4 more
    BUILD SUCCESSFUL (total time: 0 seconds)
    
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.Properties;
    import java.util.Date;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    
    public class localDataBase {
        private String driver =   "org.apache.derby.jdbc.EmbeddedDriver";
        private String protocol = "jdbc:derby:";
        private String dbName =   "localDB2";
        private DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        private Date date = new Date();
        private Calendar cal = Calendar.getInstance();
        public static void main(String[] args) {
            new localDataBase().start();
            System.out.println("\n___ DBTest completed ___");
        }
    
        void start() {
        // Load derby driver to start derby engine 
        try {
            Class.forName(driver);
                System.out.println("Loaded the appropriate driver");
        } catch (ClassNotFoundException cnfe) {
                System.err.println("\nUnable to load the JDBC driver " + driver);
                System.err.println("Please check your CLASSPATH.");
                cnfe.printStackTrace(System.err);
            System.exit(1);
            }
    
        // establishing a connection to it
    
        // Initializers; declared and set to nulls before the try-block
        // to be accessible after the try-block scope
        Connection conn = null;
        PreparedStatement psInsertUser = null;
            PreparedStatement psInsertAdmin = null;
            PreparedStatement psInsertBill = null;
        PreparedStatement psUpdate = null;
        Statement stmt = null;
        ResultSet rs = null;
    
        try {
    
            conn = DriverManager.getConnection(protocol + dbName +
                               ";create=true", "test", "test");
    
                System.out.println("Created and connected to database " + dbName);
    
                stmt = conn.createStatement();
    
    
                // Create User table
                stmt.execute("create table user(" +
                 "id int, " +
                 "firstName varchar(20), " +
                 "lastName varchar(20)" +
                             "userName varchar(20))");
    
                System.out.println("\n___ Created table user ___");
    
                // Create Administrator table
                stmt.execute("create table administrator(" +
                 "id int, " +
                 "firstName varchar(20), " +
                 "lastName varchar(20)" +
                             "userName varchar(20))");
    
                System.out.println("\n___ Created administrator user ___");
    
                // Create Bill table
                stmt.execute("create table bill(" +
                             "yearOfProduction int, " +
                 "serialNumber varchar(20), " +
                             "value int, " +
                 "location varchar(20)" +
                             "dateAndTimeCounted varchar(20))");
    
                System.out.println("\n___ Created table bill ___");
    
                //PreparedStatement to insert into User table
                psInsertUser = conn.prepareStatement
            ("insert into user values (?, ?, ?, ?)");
    
                // User1 Data
                psInsertUser.setInt(1, 1);  //insert ID
            psInsertUser.setString(2, "Davy ");    //insert firstName
            psInsertUser.setString(3, "Jones");    //insert lastName
                psInsertUser.setString(3, "User1");    //insert userName
                psInsertUser.executeUpdate();
    
            System.out.println("\n ____ Inserted: User, Davy Jones");
    
    
    
                //PreparedStatement to insert into Administrator table
                psInsertAdmin = conn.prepareStatement
            ("insert into administrator values (?, ?, ?, ?)");
    
                // Admin1 Data
                psInsertAdmin.setInt(1, 1);  //insert ID
            psInsertAdmin.setString(2, "Cutler ");    //insert firstName
            psInsertAdmin.setString(3, "Beckett");    //insert lastName
                psInsertAdmin.setString(3, "Admin1");    //insert userName
                psInsertAdmin.executeUpdate();
    
            System.out.println("\n ____ Inserted: Administrator, Cutler Beckett");
    
    
                //PreparedStatement to insert into Bill table
                psInsertBill = conn.prepareStatement
            ("insert into bill values (?, ?, ?, ?, ?)");
    
                // Bill1 Data
                psInsertBill.setInt(1, 2011);  //insert year of production
            psInsertBill.setString(2, "XY3215616 ");    //insert serial number
            psInsertBill.setInt(3, 50);    //insert value
                psInsertBill.setString(4, "Jordan-Irbid-JUST-CairoAmmanBank");    //insert         Location
                psInsertBill.setString(5, dateFormat.format(cal.getTime()).toString()); //insert date and time
                psInsertBill.executeUpdate();
    
            System.out.println("\n ____ Inserted: Bill, XY3215616 50");
    
    
    
            //Show user table data
            rs = stmt.executeQuery
            ("SELECT * FROM user order by id");
    
            System.out.printf("\n\n%4s%20s%20s%20s\n",
                       "Id", "First Name", "Last Name", "User Name");
            while (rs.next())
            System.out.printf("%4d%20s%20s%20s\n",
                       rs.getInt("id"),
                       rs.getString("firstName"),
                                       rs.getString("lastName"),
                                       rs.getString("userName"));
    
                //Show administrator table data
            rs = stmt.executeQuery
            ("SELECT * FROM administrator order by id");
    
            System.out.printf("\n\n%4s%20s%20s%20s\n",
                       "Id", "First Name", "Last Name", "User Name");
            while (rs.next())
            System.out.printf("%4d%20s%20s%20s\n",
                       rs.getInt("id"),
                       rs.getString("firstName"),
                                       rs.getString("lastName"),
                                       rs.getString("userName"));
    
                //Show user bill data
            rs = stmt.executeQuery
            ("SELECT * FROM bill order by serialNumber");
    
            System.out.printf("\n\n%4s%20s%20s%20s\n",
                       "year Of Production", "Serial Number", "Value", "Location", "date and time");
            while (rs.next())
            System.out.printf("%4d%20s%20s%20s%20s\n",
                       rs.getInt("id"),
                       rs.getString("firstName"),
                                       rs.getInt("value"),
                                       rs.getString("location"),
                                       rs.getString("dateAndTimeCounted"));
    
    
            // Commit the transaction. Any changes will be persisted to the database now.
                conn.commit();
                System.out.println("Committed the transaction");
    
            try {
            // the shutdown=true attribute shuts down Derby
            DriverManager.getConnection("jdbc:derby:;shutdown=true");
            System.out.println("Derby shut down normally");
            }
            catch (SQLException se) {
            System.err.println("Derby did not shut down normally");
            }
        }
        catch (SQLException sqle) {
                printSQLException(sqle);
            } finally {
                // release all open resources to avoid unnecessary memory usage
                // Connection
                try {
                    if (conn != null) {
                        conn.close();
                        conn = null;
                    }
                } catch (SQLException sqle) {
                    printSQLException(sqle);
                }
            }
        } // start()
    
        public static void printSQLException(SQLException e) {
        System.err.println("\n----- SQLException -----");
        System.err.println("  SQL State:  " + e.getSQLState());
        System.err.println("  Error Code: " + e.getErrorCode());
        System.err.println("  Message:    " + e.getMessage());
        // for stack traces, you may refer to derby.log
        e.printStackTrace(System.err);
        }
    }