gpt4 book ai didi

java - 为什么我的 Java 程序不更新关联的 postgresql 表?

转载 作者:行者123 更新时间:2023-11-29 13:27:04 24 4
gpt4 key购买 nike

我的代码有问题让我很困惑。我创建了一个 Java 应用程序来测试在 postgresql 中操作表中一行的不同方法。我能够很好地连接到数据库,但是当我尝试更新表时出现了问题。首先,这是我在执行查询后在 postgresql 中的表 select * from "testTable"order by "p_id"ASC; :

             |name       |age        |p_id       |salary
character integer integer character varying(10)
1 |Bob |25 |1 |20
2 |Mary |22 |2 |
3 |Abraham |55 |3 |22
4 |Ellen |31 |4 |

我想做的是给玛丽和艾伦一份薪水。我使用下面的 Java 代码来尝试完成此任务:

import java.util.ArrayList;
import org.postgresql.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Arrays;
import java.util.regex.*;
import java.io.IOException;
import java.sql.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
import java.text.NumberFormat;
import java.text.DecimalFormat;
import java.util.*;
public class Test
{
public static void main(String[] args) throws IOException
{
{
String s1 = "";
String s2 = "";
String s3 = "";
String s4 = "";
try{
Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/myapp5_development", "alex", "");
Statement myStmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet myRs = myStmt.executeQuery("select \"salary\", \"p_id\" from \"testTable\" where \"salary\" is null order by p_id ASC");
int counter = 0;
String[] salaries = {"45", "17"};

while (myRs.next())
{
s3 = myRs.getString("p_id");
s4 = myRs.getString("salary");
System.out.println("ID: " + s3 +", salary: " + s4);
myRs.updateString("salary", salaries[counter] );
System.out.println(salaries[counter]);
System.out.println(counter);
counter++;
}

}
catch(Exception exc){
exc.printStackTrace();
}
}
}
}

假设“while”循环中的代码遍历表中“salary”值为空的每一行。然后用“salaries”数组中的值填充空值。输出显示在循环中找到具有空薪水值的行,并且计数器相应地递增。 “薪水”数组中的相应值也根据计数器的值找到。但是,行本身并未更新。我应该怎么做才能正确更新表格的行?这是控制台的输出:

ID: 2, salary: null
45
0
ID: 4, salary: null
17
1

这是发送相同 SQL 查询时的结果表:

             |name       |age        |p_id       |salary
character integer integer character varying(10)
1 |Bob |25 |1 |20
2 |Mary |22 |2 |
3 |Abraham |55 |3 |22
4 |Ellen |31 |4 |

最佳答案

在使用 myRs.updateString("salary", salaries[counter] ); 之后,您应该使用 updateRow() 更新该行,如下所示:

myRs.updateString("salary", salaries[counter] );
myRs.updateRow();

关于java - 为什么我的 Java 程序不更新关联的 postgresql 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31807538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com