如何从MySQL表中删除所有数据并使用新数据填充表

时间:2013-08-02 09:42:09

标签: java mysql

我正在编写一个java函数来删除MySQL表中的所有数据,然后在其中写入新数据。以下是我的功能。

public void editsnack(ArrayList snames)
{
System.out.println("Snack Names "+snames);
Statement _snacksListStmt = null;
Statement _deleteTableDtataStmt = null;
try
{
    _snacksListStmt = fCon.createStatement();
    _deleteTableDtataStmt = fCon.createStatement();
    int i=0;

        for(i=0;i<snames.size();i++)
        {
        String _name = snames.get(i).toString();
        String _deleteTableData ="TRUNCATE TABLE snacklist";
        _deleteTableDtataStmt.executeUpdate(_deleteTableData);
        String _snackListQuery ="insert into snacklist(snackName)values('"+_name+"')";
        System.out.println("Query ");
        System.out.println(_snackListQuery);
        _snacksListStmt.executeUpdate(_snackListQuery);
        }
}

请注意,成功删除数据后,这些行

System.out.println("Query ");
System.out.println(_snackListQuery);

正在打印正确的值,但值不会存储在表格中。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

首先,您要删除要插入的每个项目的所有数据。

所以将TRUNCATE代码移到for - 循环

之前

看看你是否可以在将它们添加到SQL中之前清理小吃名称,否则它们会导致sql-injections

答案 1 :(得分:0)

根据您是否在autoCommit上设置了连接,您必须致电fCon.commit()来提交您的交易。 你也应该在完成后关闭你的陈述。

答案 2 :(得分:0)

问题是for循环中的删除查询,您在每次插入后截断数据。使用当前逻辑,只有最后一个插入将在表中重新生成,所有其他数据将被截断。将删除查询移到for循环之外,然后尝试:

     String _deleteTableData ="TRUNCATE TABLE snacklist";
    _deleteTableDtataStmt.executeUpdate(_deleteTableData);


  for(i=0;i<snames.size();i++)
    {
    String _name = snames.get(i).toString();
    String _snackListQuery ="insert into snacklist(snackName)values('"+_name+"')";
    System.out.println("Query ");
    System.out.println(_snackListQuery);
    _snacksListStmt.executeUpdate(_snackListQuery);
    }

答案 3 :(得分:0)

尝试以下代码..

    public void editsnack(ArrayList snames)
    {
    System.out.println("Snack Names "+snames);
    Statement _snacksListStmt = null;
    Statement _deleteTableDtataStmt = null;
    try
    {
    _snacksListStmt = fCon.createStatement();
    _deleteTableDtataStmt = fCon.createStatement();

    String _deleteTableData ="TRUNCATE TABLE snacklist";
    _deleteTableDtataStmt.executeUpdate(_deleteTableData);

    int i=0;

        for(i=0;i<snames.size();i++)
        {
        String _name = snames.get(i).toString();
        String _snackListQuery ="insert into snacklist (snackName) values ('"+_name+"')";
        System.out.println("Query ");
        System.out.println(_snackListQuery);
        _snacksListStmt.executeUpdate(_snackListQuery);
        }
}