Spring 错误:java.sql.SQLSyntaxErrorException,如何修复?
我对SQL语法有问题。当iSpring 错误:java.sql.SQLSyntaxErrorException,如何修复?,spring,hibernate,jetty,Spring,Hibernate,Jetty,我对SQL语法有问题。当imvn jetty:run时,出现以下错误: java.sql.SQLSyntaxErrorException:语法错误:在遇到“用户” 第1行,共14列。 位于org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(未知 n来源) 位于org.apache.derby.impl.jdbc.Util.generateCsSQLException(未知源 ) 位于org.apache.derby.imp
mvn jetty:run
时,出现以下错误:
java.sql.SQLSyntaxErrorException:语法错误:在遇到“用户”
第1行,共14列。
位于org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(未知
n来源)
位于org.apache.derby.impl.jdbc.Util.generateCsSQLException(未知源
)
位于org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException
(来源不明)
位于org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Un
(已知来源)
位于org.apache.derby.impl.jdbc.EmbedConnection.handleException(未知
(资源)
位于org.apache.derby.impl.jdbc.ConnectionChild.handleException(未知
(资源)
位于org.apache.derby.impl.jdbc.EmbedStatement.execute(未知源代码)
位于org.apache.derby.impl.jdbc.EmbedStatement.execute(未知源代码)
位于edu.java.spring.service.user.controller.CustomContextLoaderListener.c
reateTableNotExist(CustomContextLoaderListener.java:68)
位于edu.java.spring.service.user.controller.CustomContextLoaderListener.c
reateTable(CustomContextLoaderListener.java:48)
位于edu.java.spring.service.user.controller.CustomContextLoaderListener.c
OnTesteInitialized(CustomContextLoaderListener.java:36)
此处文件CustomContextLoaderListene
遇到错误:
package edu.java.spring.service.user.controller;
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.servlet.ServletContextEvent;
import org.springframework.web.context.ContextLoaderListener;
public class CustomContextLoaderListener extends ContextLoaderListener{
@Override
public void contextDestroyed(ServletContextEvent event) {
// TODO Auto-generated method stub
System.out.println("hibernate shutdown database");
try {
DriverManager.getConnection("jdbc:derby:D:/PROJECTSPRING/userdb;shutdown=true");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("\n Spring-MVC application destroyed \n");
super.contextDestroyed(event);
}
@Override
public void contextInitialized(ServletContextEvent event) {
// TODO Auto-generated method stub
System.out.println("\n Spring-MVC application inited \n");
try {
createTable();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.contextInitialized(event);
}
public void createTable() throws SQLException{
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection connection = DriverManager.getConnection("jdbc:derby:D:/PROJECTSPRING/subjectdb;create=true");
createTableNotExist(connection,"user", "create table user"
+ "(username varchar(1000) primary key,"
+ "password varchar(1000),birthday date,"
+ "age integer,gender varchar(100))");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void createTableNotExist(Connection connection,
String tableName,String createTableSQL) throws SQLException{
DatabaseMetaData dbmd = connection.getMetaData();
ResultSet rs = dbmd.getTables(null, null,tableName.toUpperCase(), null);
if (rs.next()){
System.out.println("Table" + rs.getString("TABLE_NAME") + "already exists");
return;
}
Statement statement = connection.createStatement();
statement.execute(createTableSQL);
System.out.println("\n\n executed" + createTableSQL + "\n\n");
statement.close();
}
}
“用户”是derby中的内置函数。输入另一个表名,它将开始工作