Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java servlet init方法无法创建mysql表-为什么?_Java_Mysql_Servlets - Fatal编程技术网

Java servlet init方法无法创建mysql表-为什么?

Java servlet init方法无法创建mysql表-为什么?,java,mysql,servlets,Java,Mysql,Servlets,我的JavaServletInit方法无法创建mysql表——我想知道原因。当我直接登录mysql并创建表时,生活是美好的,当我删除表并运行servlet-没有表时,servlet抛出一个异常(还没有完全发现)。代码如下所示: package ...; import ... // quite a bit @WebServlet("/MyClass") public class MyClass extends HttpServlet { public void init()

我的JavaServletInit方法无法创建mysql表——我想知道原因。当我直接登录mysql并创建表时,生活是美好的,当我删除表并运行servlet-没有表时,servlet抛出一个异常(还没有完全发现)。代码如下所示:

package ...;
import ... // quite a bit
@WebServlet("/MyClass") 
public class MyClass extends HttpServlet {
          public void init() throws ServletException {
        try {     Foo foo = Foo.getInstance();
                    foo.createTables();  
            } catch (Exception e) {
                throw new ServletException("Error creating tables", e);         
            }
      }
    package ...;
    import ... // quite a bit
public class Foo {
  public static final Foo INSTANCE = new Foo();

  public static Foo getInstance() {
    return INSTANCE;
  } 
…//更多关于MyClass的东西 } //Foo是一个看起来像这样的单身汉:

package ...;
import ... // quite a bit
@WebServlet("/MyClass") 
public class MyClass extends HttpServlet {
          public void init() throws ServletException {
        try {     Foo foo = Foo.getInstance();
                    foo.createTables();  
            } catch (Exception e) {
                throw new ServletException("Error creating tables", e);         
            }
      }
    package ...;
    import ... // quite a bit
public class Foo {
  public static final Foo INSTANCE = new Foo();

  public static Foo getInstance() {
    return INSTANCE;
  } 
…//那就多吃些食物吧

public void createTables(){
 try {

        // first establish a connection
 Connection connection = Foo.getInstance().getConnection(); // get connection est.
//东部标准时间。与数据库的连接—一旦设置了表,就可以正常工作

 //Create a query. 
 Statement stmt = connection.createStatement(); 

    String query = "CREATE TABLE IF NOT EXISTS survey (uuid_Survey VARCHAR(36) NOT NULL, "+
    "top VARCHAR(40), " +
    " likert VARCHAR(40), "+
    " numerical VARCHAR(40), "+
    " open VARCHAR(40), " +
    " KEY ix_survey_uuid (uuid_Survey), "+
    " PRIMARY KEY (uuid_Survey))";

 ResultSet rs = stmt.executeQuery( query ); 
     query = "CREATE TABLE IF NOT EXISTS result (" +
    "uuid_Survey VARCHAR(36) NOT NULL, "+
    "remoteAddress VARCHAR(15) NOT NULL, " +
    "currentTime BIGINT NOT NULL, "+
    " likert VARCHAR(40),"+
    " numerical DOUBLE, " +
    " open VARCHAR(40),  "+
    " PRIMARY KEY (uuid_Survey, remoteAddress, currentTime),"+
    "FOREIGN KEY ix_survey_uuid (uuid_Survey) REFERENCES survey (uuid_Survey))" ;

 rs = stmt.executeQuery( query );  

 connection.close();

 } catch (Exception e) {
        System.err.println("Error creating tables: " + e);
 }

 }

不能使用
stmt.executeQuery(查询)

正如上面所说的-

ResultSet#executeQuery(字符串sql)
-此方法执行给定的sql语句,该语句返回单个ResultSet对象。其中sql—要发送到数据库的sql语句,通常为静态sql SELECT语句

您可能希望使用

stmt.execute(查询)


停止捕获和隐藏异常。至少打印他们的堆栈跟踪,以了解问题所在。我仍在寻找它-我编写了servlet以转到错误页面,不幸的是,该页面信息量不大(我希望错误消息等出现的地方为空)。查看我的tomcat日志,我找不到任何有用的东西。你找不到任何有用的东西,因为正如我所说的,你明确地阻止了一些有用的东西被打印出来。替换
System.err.println(“创建表时出错:+e”)通过
抛出新的运行时异常(e),或至少通过
e.printStackTrace()我试着输入e.printStackTrace();但是jsp错误页面仍然没有显示任何有用的内容。catalina日志仍然没有显示任何有用的内容。