我正在尝试创建一个程序,我将从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)
答案 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;
}