使用Java在INSITE中无法运行INSERT操作

时间:2016-03-20 15:00:22

标签: java mysql sql sqlite

我遇到了SQLITE和Java的问题。我已经查看了一些建议程序员使用异常的答案。我使用过但我的代码仍然给了我一个错误

java.sql.SQLException: no such table: australia

并且未在创建的数据库上更新记录:

Class.forName("org.sqlite.JDBC");
                Connection connect = DriverManager.getConnection("jdbc:sqlite:playlist.sqlite");
                System.out.println("Playlist db opened");
                Statement saveStatement = connect.createStatement();
                saveStatement.executeUpdate(makeTable);

                try {
                    ResultSet getAllSameGenre = artStmt.executeQuery("SELECT * FROM tracklist WHERE genre = '" + storeGenre + "' ORDER BY RANDOM() LIMIT 10");

                    while(getAllSameGenre.next()){
                        int id = 1;
                        String title = getAllSameGenre.getString("title");
                        String artist = getAllSameGenre.getString("artist");
                        String genre = getAllSameGenre.getString("genre");
                        String album = getAllSameGenre.getString("album");

                        Statement finalRecord = connect.createStatement();
                        String storeTableName = playlistNameInsert.getText();
                        String record = "INSERT INTO " + storeTableName + " (id , title, artist , genre , album )" +  "VALUES ( '" +id+title+artist+genre+album+ " ' ); " ;
                        finalRecord.executeUpdate(record);

                        id ++;
                    }
                    saveStatement.close();
                    connect.close();
                }
                catch(Exception e){
                    System.out.println(e);
                }

1 个答案:

答案 0 :(得分:0)

playlistNameInsert.getText()的值的值为Australia,而您没有table这样的名称。您需要确保只有select frominsert intodelete fromupdate table存在于您工作的database中用。此外,您需要用逗号分隔值,因此这部分看起来也很可疑:

+id+title+artist+genre+album+

更不用说如果一个值是文本的,那么你需要在它周围包围撇号。看起来你不熟悉SQL语法,所以我认为你应该看一些教程,然后再回到这个问题。