我的插入语句有什么问题? mysql java

时间:2011-12-07 03:47:45

标签: java sql

我的插入方法有什么问题? 我的表有两列,名称,艺术家和时间戳,也是 实际上,我如何将时间戳参数传递给insert语句?

ok.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                /*FileWriter dir = new FileWriter(nameOfSong.getText()
                        + ".txt");
                BufferedWriter buffer = new BufferedWriter(dir);
                buffer.write(nameOfSong.getText());
                buffer.newLine();
                buffer.write(artist.getText());
                buffer.newLine();
                buffer.newLine();
                buffer.write(lyrics.getText());
                buffer.close();
                */

                Statement statement = connection.createStatement();
                statement.executeUpdate("INSERT INTO lyrics1_lyrics1 VALUES(" +
                nameOfSong.getText() + ", " + artist.getText() + "");


            } catch (Exception z) {
                System.err.println("Error: " + z.getMessage());
            } 
            internalFrame.dispose();
        }
    });
)

5 个答案:

答案 0 :(得分:6)

始终使用PreparedStatement

 String sql="INSERT INTO lyrics1_lyrics1 VALUES (?,?)";
 PreparedStatement statement = connection.prepareStatement(sql);
 statement.setString(1,nameOfSong.getText());
 statement.setString(2,artist.getText());
 statement.executeUpdate();
 statement.close();
 connection.close();

答案 1 :(得分:4)

文本值需要用单引号('')包围。

并且SQL转义以避免SQL injection攻击,或者您第一次收到Little Bobby Tables的歌曲时,您的所有数据库都属于他。

更好的是,use a PreparedStatement,让机器为你工作。

答案 2 :(得分:3)

您可以使用预备语句

String query = "INSERT INTO lyrics1_lyrics1(name, artist, timestamp) values(?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setString(1, name); // set input parameter 2
pstmt.setString(2, artist);
pstmt.setString(3, new TimeStamp(new Date().getTime()));

您需要为TimeStap添加import语句;

import java.sql.Timestamp;

或者使用

pstmt.setString(3, new java.sql.TimeStamp(new Date().getTime()));

示例:Prepared Statement Insert

您可以在java2s site中找到很多示例。

答案 3 :(得分:2)

将行更改为:

statement.executeUpdate("INSERT INTO lyrics1_lyrics1 VALUES('" +
                    nameOfSong.getText() + "', '" + artist.getText() + "'");

答案 4 :(得分:1)

这可能会解决您的问题:

statement.executeUpdate("INSERT INTO lyrics1_lyrics1 VALUES('" + nameOfSong.getText() + "', '" + artist.getText() + "')");`