【发布时间】:2020-10-12 04:21:38
【问题描述】:
我正在使用 Java 中的准备好的语句将月度财务数据插入数据库表中。我每个月第一次按下按钮时,我希望它进行 SQL 查询插入,但其他时间只是更新以避免同一个月重复。我怎么能做到这一点?
这是我的代码
String dbQuery18 = "INSERT INTO weekly_finances VALUES (?,?,?,?)";
String dbQuery19 = "INSERT INTO monthly_finances VALUES (?,?,?,?)";
// Data to be entered
int weekNumber = 0;
int monthNumber = 0;
float weeklySum = 0;
float monthlySum = 0;
if (command.equals("Save"))
{
try
{
try
{
day = thisDay;
weekNumber = thisWeek;
monthNumber = thisMonth;
PreparedStatement ps16 = myDbConn.prepareStatement(dbQuery16);
// Passing Values into ps to fill in
ps16.setInt(1, weekNumber);
ResultSet res = ps16.executeQuery();
while (res.next())
{
int c = res.getInt(1);
weeklySum = weeklySum + c;
};
System.out.println("This is the weekly Sum = " + weeklySum);
PreparedStatement ps17 = myDbConn.prepareStatement(dbQuery17);
// Passing Values into ps to fill in
ps17.setInt(1, monthNumber);
ResultSet res1 = ps17.executeQuery();
while (res1.next())
{
int d = res1.getInt(1);
monthlySum = monthlySum + d;
};
// Inputting into Database
// Prepare Statement using Connection
PreparedStatement ps18 = myDbConn.prepareStatement(dbQuery18);
// Passing Values into ps to fill in
ps18.setInt(1, weekNumber);
ps18.setFloat(2, weeklySum);
ps18.setFloat(3, NULL);
ps18.setFloat(4, NULL);
// Executing Update
ps18.executeUpdate();
PreparedStatement ps19 = myDbConn.prepareStatement(dbQuery19);
// Passing Values into ps to fill in
ps19.setInt(1, monthNumber);
ps19.setFloat(2, monthlySum);
ps19.setFloat(3, NULL);
ps19.setFloat(4, NULL);
// Executing Update
ps19.executeUpdate();
【问题讨论】:
-
“...第一次...每个月...”这句话有点令人担忧;它表明问题可能不像“按钮在第一次单击时执行 X,然后每次都执行 Y”那么简单。但是,是的,一般来说,有有种方法可以使按钮的功能在每次点击时发生变化。
标签: java sql swing prepared-statement