创建表时出错

时间:2013-05-30 08:31:56

标签: java mysql jdbc

我正在尝试创建一个程序,我将从txt文件中读取数据并将其存储在表中。所有.txt文件都在特定目录中。该表将具有我将为我的程序中的每个文件创建的特定字段。 我已经编写了下面的代码,你可以看到用户给出了文件所在的目录,然后数据将显示在控制台中,然后我试图制作一个名为文件名的表,而不是.TXT

但是当我运行该程序时,我会在行中出错:

stmt.executeUpdate(createtable);getCreateTable1(con, tablename);

任何人都可以帮助我为什么会这样?

我得到的是:

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 'DATE VARCHAR(255), HOUR VARCHAR(255), LITRES VARCHAR(255)' at line 1
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: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 'DATE VARCHAR(255), HOUR VARCHAR(255), LITRES VARCHAR(255)' at line 1
at notepad.getCreateTable1(notepad.java:97)
    at notepad.main(notepad.java:76)

3 个答案:

答案 0 :(得分:1)

在第一个视图中,您的创建语句中存在与括号相关的错误:

    String createtable = "CREATE TABLE " + tablename +  ( " DATE VARCHAR(255), HOUR VARCHAR(255), LITRES VARCHAR(255)");


Your final statement is: CREATE TABLE tablename DATE VARCHAR(255), HOUR VARCHAR(255), LITRES VARCHAR(255)

答案 1 :(得分:0)

你必须在CREATE TABLE语句中用大括号括起字段(它们在双引号之外,应该在里面):

String createtable = "CREATE TABLE " + tablename +   " ( DATE VARCHAR(255), HOUR VARCHAR(255), LITRES VARCHAR(255) )";

答案 2 :(得分:0)

将您的getCreateTable1更改为以下内容。

private static String getCreateTable1 (Connection con, String tablename){
    Statement stmt = null;
    try {
        Class.forName("com.mysql.jdbc.Driver"); // No need of this
        stmt = con.createStatement();
        String dropTable = "DROP TABLE IF EXIST "+tablename;
        String createtable = "CREATE TABLE " + tablename +  "(  DATE VARCHAR(255), HOUR VARCHAR(255), LITRES VARCHAR(255));" ;
        System.out.println("Create a new table in the database");
        stmt.executeUpdate(dropTable);
        stmt.executeUpdate(createtable);
    } catch (Exception e) {
        System.out.println(((SQLException) e).getSQLState());
        System.out.println(e.getMessage());
        e.printStackTrace();
    } finally {
        if(stmt != null) {
            try {
                stmt.close();
            } catch(Exception e) {
                // Warn
            }   
        }            
    }

    return null;
}