Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从MySQL表中删除所有数据并用新数据填充表_Java_Mysql - Fatal编程技术网

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

Java 如何从MySQL表中删除所有数据并用新数据填充表,java,mysql,Java,Mysql,我正在编写一个java函数来删除MySQL表中的所有数据,然后在其中写入新数据。以下是我的功能 public void editsnack(ArrayList snames) { System.out.println("Snack Names "+snames); Statement _snacksListStmt = null; Statement _deleteTableDtataStmt = null; try { _snacksListStmt = fCon.createStat

我正在编写一个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);
        }
}
正在打印正确的值,但表中未存储值


如何解决此问题?

根据您的连接是否设置为自动提交,您必须调用
fCon.commit()
提交事务。
此外,在完成操作时,应该始终关闭语句。

问题在于for循环中的delete查询,每次插入后都会截断数据。使用当前逻辑,只有最后一次插入才会在表中重新插入,所有其他数据都将被截断。将删除查询移到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);
    }
String\u deleteTableData=“TRUNCATE TABLE snacklist”;
_DeleteTabledDataStmt.executeUpdate(\u deleteTableData);

对于(i=0;i首先,您要删除插入的每个项目的所有数据

因此,将
TRUNCATE
代码移动到
for
循环之前

并查看是否可以在将零食名称添加到SQL之前对其进行清理,或者它们可能导致SQL注入

请尝试下面的代码

    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);
        }
}
public void editSnapshot(ArrayList snames)
{
System.out.println(“零食名称”+snames);
语句_snackslistmt=null;
语句_deleteTableDtataStmt=null;
尝试
{
_snackslistmt=fCon.createStatement();
_DeleteTabledDatastmt=fCon.createStatement();
字符串_deletetetabledata=“TRUNCATE TABLE snacklist”;
_DeleteTabledDataStmt.executeUpdate(\u deleteTableData);
int i=0;

对于(i=0;i首先,您正在删除插入的每个项目的所有数据。因此,请将
截断
代码移动到
for
-loopals..该SQL可以包含注入。@NoLifeKing将您的第一条注释作为答案发布,以便我可以接受它。
    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);
        }
}