首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.sql.SQLSyntaxErrorException:语法错误:在第1行第8列遇到"TABLEBOOK“

java.sql.SQLSyntaxErrorException:语法错误:在第1行第8列遇到"TABLEBOOK“
EN

Stack Overflow用户
提问于 2019-05-30 14:48:43
回答 1查看 512关注 0票数 1

我按照you tube的教程开发了一个图书馆管理系统,但是当我尝试在我的derby数据库中创建表时,它生成了语法错误。

代码语言:javascript
运行
复制
java.sql.SQLSyntaxErrorException: Syntax error: Encountered "TABLEBOOK" at line 1, column 8.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.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 library.assistant.database.DatabaseHandler.setupBookTable(DatabaseHandler.java:48)
at library.assistant.database.DatabaseHandler.<init>(DatabaseHandler.java:24)
at library.assistant.ui.addbook.FXMLDocumentController.initialize(FXMLDocumentController.java:48)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
at library.assistant.ui.addbook.LibraryAssistant.start(LibraryAssistant.java:22)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Thread.java:748)
Caused by: ERROR 42X01: Syntax error: Encountered "TABLEBOOK" at line 1, column 8.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.sql.compile.ParserImpl.parseStatementOrSearchCondition(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)
... 23 more

下面是我的数据库处理程序代码:

代码语言:javascript
运行
复制
package library.assistant.database;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;

public final class DatabaseHandler {
   
    private static DatabaseHandler handler;

    private static final String DB_URL = "jdbc:derby:database;create=true";
    private static Connection conn = null;
    private static Statement stmt = null;
    
    public DatabaseHandler(){
        createConnection();
        setupBookTable();
    } 
    
    void createConnection(){
        try{
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
            conn = DriverManager.getConnection(DB_URL);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
    void setupBookTable(){
        String TABLE_NAME = "BOOK";
        try {
            stmt = conn.createStatement();
            
            DatabaseMetaData dbm = conn.getMetaData();
            ResultSet tables = dbm.getTables(null, null, TABLE_NAME.toUpperCase(), null);
            
            if (tables.next()){
                System.out.println("Table " + TABLE_NAME + "already exists! ready for go!");
            }
            else {
                stmt.execute("CREATE TABLE" + TABLE_NAME + "("
                           + "     id varchar(200) primary key, \n"
                           + "     title varchar(200), \n"
                           + "     author varchar(200), \n"
                           + "     publisher varchar(200), \n"
                           + "     isAvail boolean default true"
                           + ")");
            }
        }catch(SQLException e){
            System.err.println(e.getMessage() + ".......setupDatabase");
        }finally{    
        }
    }
    
    public ResultSet execQuery(String query){
        ResultSet result;
        try{
            stmt = conn.createStatement();
            result = stmt.executeQuery(query);
        }catch(SQLException ex){
            System.out.println("Exception at execQuery: dataHandler" + ex.getLocalizedMessage());
            return null;
        }finally {
            
        }
        return result;
    }
    
    public boolean execAction (String qu){
        try{
            stmt = conn.createStatement();
            stmt.execute(qu);
            return true;
        }catch(SQLException ex){
            JOptionPane.showMessageDialog(null, "Error: " + ex.getMessage(), "Error Occured", JOptionPane.ERROR_MESSAGE);
            System.out.println("Exception at execQuery: dataHandler" + ex.getLocalizedMessage());
            return false;
        }finally {
            
        }
    }
}

我从一个YouTube教程中得到了这个文件,但它似乎不适合我。

EN

Stack Overflow用户

发布于 2021-01-24 08:03:21

代码语言:javascript
运行
复制
void createConnection(){
    try{
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        conn=DriverManager.getConnection(BD_URL);
    }
    catch(Exception e){
        e.printStackTrace();
    }
}

void setupEmployeeTable(){
    String TABLE_NAME = "EMPLOYEE";
    
    try{
        
        stmt = conn.createStatement();
        
        DatabaseMetaData dbm = conn.getMetaData();
        ResultSet tables = dbm.getTables(null, null, TABLE_NAME.toUpperCase(), null);
        if (tables.next()){
            System.out.print("Table" + TABLE_NAME +" READY");
            
        }
        else{
            stmt.execute("CREATE TABLE Employee("
                    + "ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY"
                    +"(START WITH 1,INCREMENT BY 1),"
                    + "name varchar(200),"
                    + "phone varchar(200),"
                    + "time timestamp default CURRENT_TIMESTAMP)");
                   
        }
    }catch(SQLException e){
        System.err.println(e.getMessage()+"....setupdatabase ");
    }finally
            {
            }      
}
票数 -1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56373120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档