繁体   English   中英

Java 创建表 sql 语句

[英]Java create table sql statement

我想用这种方法创建一个新的 mySQL 表。 数据库连接工作正常。 我做了很多这样的工作声明,但是这个,创建一个表不起作用。 所以错误必须在这几行代码中。 在底部我添加了错误消息。

 public void createNewTable(){
        DatabaseConnection connectNow = new DatabaseConnection();
        Connection connectDb = connectNow.getConnection();
        String tableName = "users";
        try {
               String createTable = "CREATE TABLE ? (firstname varchar(30), lastname varchar(30), tel integer" +
                "email varchar(40), arrive_stamp timestamp, quit_stamp timestamp)";
            PreparedStatement myStmt = connectDb.prepareStatement(createTable);
            myStmt.setString(1, tableName);
            myStmt.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
            e.getCause();
        }

    }






 Illegal operation on empty result set.
    java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near ''users' (firstname varchar(30), 
lastname varchar(30), tel integer, email varchar' at line 1

数据库 object 名称(包括表名),不能绑定占位符。 您必须对表名进行硬编码或使用字符串连接。 以下将起作用:

try {
    String sql = "CREATE TABLE users (firstname varchar(30), lastname varchar(30), tel integer, " +
                 "email varchar(40), arrive_stamp timestamp, quit_stamp timestamp)";
    PreparedStatement myStmt = connectDb.prepareStatement(sql);
    myStmt.executeUpdate();
}
catch (Exception e) {
    e.printStackTrace();
    e.getCause();
}

您在telemail,丢失了。 正如蒂姆在评论中提到的那样,您应该在 sql 语句本身中使用表名。

您的 sql 语句应该是

String createTable = "CREATE TABLE your_table_name (firstname varchar(30), lastname varchar(30), tel integer, " + -- added , at the end
                "email varchar(40), arrive_stamp timestamp, quit_stamp timestamp)";
        

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM