2013-05-30 106 views
0

我想制作一个程序,我将从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) 
+1

你得到的错误是什么? –

+1

我们可以进行堆栈跟踪吗? –

+0

发布错误日志.. – MaheshVarma

回答

0

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

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

非常感谢你!它的作品:) – dedmar

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) 
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; 
}