J
justineee
Hello, I am creating a mini accounting software that adds account
names and their respective values..
I use mySQL as my database for this project and I am successful in
making tables for each account name upon input of the user. The table
for each account name has four columns (date, debit, credit and
balance). For each row the balance column should be equal to debit-
credit. However, I'm having problems in doing this. This is my code in
getting the balance using java with SQL
public int balance(String tablename)
{
try
{
String get = "SELECT * FROM "+tablename+"";
db.connect();
stmt = db.conn.createStatement();
rset = stmt.executeQuery(get);
int totaldeb = 0;
int totalcre = 0;
int total = 0;
int balance = 0;
int temp = 0;
int ctr = 0;
while(rset.next())
{
totaldeb += rset.getInt("debit");
totalcre += rset.getInt("credit");
total = totaldeb - totalcre;
balance = total;
}
stmt.close();
db.disconnect();
return balance;
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
return -1;
}
and here is how I insert the values in the table in SQL
//for debit
public void insertValuesDeb(String tablename)
{
insertToDb = "INSERT into "+tablename+" VALUES('"+getDate+"',
"+getDebitAmount+",'0',"+balance(tablename)+")";
insert(insertToDb);
}
//for credit
public void insertValuesCred(String tablename)
{
insertToDb = "INSERT into "+tablename+" VALUES('"+getDate+"',
'0', '"+getCreditAmount+"', "+balance(tablename)+")";
insert(insertToDb);
}
When I insert values.. Here is an example result in mySQL
date debit credit balance
jan 1 23 0 0
23 0 23
0 0 46
0 1 46
0 0 45
In this example, the problem here is that the result of the balance is
not in the right row.. In the first row, I put 23 on debit and 0 on
credit but the balance is 0. On the second row, I put 23 again on
debit and 0 on credit and the balance is 23 (the result of balance
here is 23, it came from the result of the first row). And on the
third row, the result of balance is 46 which should be on the second
row..
I want to know what I'm doing wrong with my balance method typewritten
above. I have tried this without the sql with the same concept.
This is my code for my test without sql.
import java.util.*;
public class Extra
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
int totaldeb = 0;
int totalcre = 0;
int total = 0;
int balance = 0;
int ctr = 0;
while (ctr < 6)
{
totaldeb+=s.nextInt();
totalcre+=s.nextInt();
total = totaldeb-totalcre;
balance=total;
System.out.println(balance);
ctr++;
}
}
}
This worked for me.
But I really can't do it right with sql. Any help please?
names and their respective values..
I use mySQL as my database for this project and I am successful in
making tables for each account name upon input of the user. The table
for each account name has four columns (date, debit, credit and
balance). For each row the balance column should be equal to debit-
credit. However, I'm having problems in doing this. This is my code in
getting the balance using java with SQL
public int balance(String tablename)
{
try
{
String get = "SELECT * FROM "+tablename+"";
db.connect();
stmt = db.conn.createStatement();
rset = stmt.executeQuery(get);
int totaldeb = 0;
int totalcre = 0;
int total = 0;
int balance = 0;
int temp = 0;
int ctr = 0;
while(rset.next())
{
totaldeb += rset.getInt("debit");
totalcre += rset.getInt("credit");
total = totaldeb - totalcre;
balance = total;
}
stmt.close();
db.disconnect();
return balance;
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
return -1;
}
and here is how I insert the values in the table in SQL
//for debit
public void insertValuesDeb(String tablename)
{
insertToDb = "INSERT into "+tablename+" VALUES('"+getDate+"',
"+getDebitAmount+",'0',"+balance(tablename)+")";
insert(insertToDb);
}
//for credit
public void insertValuesCred(String tablename)
{
insertToDb = "INSERT into "+tablename+" VALUES('"+getDate+"',
'0', '"+getCreditAmount+"', "+balance(tablename)+")";
insert(insertToDb);
}
When I insert values.. Here is an example result in mySQL
date debit credit balance
jan 1 23 0 0
23 0 23
0 0 46
0 1 46
0 0 45
In this example, the problem here is that the result of the balance is
not in the right row.. In the first row, I put 23 on debit and 0 on
credit but the balance is 0. On the second row, I put 23 again on
debit and 0 on credit and the balance is 23 (the result of balance
here is 23, it came from the result of the first row). And on the
third row, the result of balance is 46 which should be on the second
row..
I want to know what I'm doing wrong with my balance method typewritten
above. I have tried this without the sql with the same concept.
This is my code for my test without sql.
import java.util.*;
public class Extra
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
int totaldeb = 0;
int totalcre = 0;
int total = 0;
int balance = 0;
int ctr = 0;
while (ctr < 6)
{
totaldeb+=s.nextInt();
totalcre+=s.nextInt();
total = totaldeb-totalcre;
balance=total;
System.out.println(balance);
ctr++;
}
}
}
This worked for me.
But I really can't do it right with sql. Any help please?