1 import java.sql.Connection;
2 import java.sql.ResultSet;
3 import java.sql.PreparedStatement;
4 import java.sql.SQLException;
5
6 /**
7 A bank account has a balance that can be changed by
8 deposits and withdrawals.
9 */
10 public class BankAccount
11 {
12 private int accountNumber;
13
14 /**
15 Constructs a bank account with a given balance.
16 @param anAccountNumber the account number
17 */
18 public BankAccount(int anAccountNumber)
19 {
20 accountNumber = anAccountNumber;
21 }
22
23 /**
24 Deposits money into a bank account.
25 @param amount the amount to deposit
26 */
27 public void deposit(double amount)
28 throws SQLException
29 {
30 Connection conn = SimpleDataSource.getConnection();
31 try
32 {
33 PreparedStatement stat = conn.prepareStatement(
34 "UPDATE Account"
35 + " SET Balance = Balance + ?"
36 + " WHERE Account_Number = ?");
37 stat.setDouble(1, amount);
38 stat.setInt(2, accountNumber);
39 stat.executeUpdate();
40 }
41 finally
42 {
43 conn.close();
44 }
45 }
46
47 /**
48 Withdraws money from a bank account.
49 @param amount the amount to withdraw
50 */
51 public void withdraw(double amount)
52 throws SQLException
53 {
54 Connection conn = SimpleDataSource.getConnection();
55 try
56 {
57 PreparedStatement stat = conn.prepareStatement(
58 "UPDATE Account"
59 + " SET Balance = Balance - ?"
60 + " WHERE Account_Number = ?");
61 stat.setDouble(1, amount);
62 stat.setInt(2, accountNumber);
63 stat.executeUpdate();
64 }
65 finally
66 {
67 conn.close();
68 }
69 }
70
71 /**
72 Gets the balance of a bank account.
73 @return the account balance
74 */
75 public double getBalance()
76 throws SQLException
77 {
78 Connection conn = SimpleDataSource.getConnection();
79 try
80 {
81 double balance = 0;
82 PreparedStatement stat = conn.prepareStatement(
83 "SELECT Balance FROM Account WHERE Account_Number = ?");
84 stat.setInt(1, accountNumber);
85 ResultSet result = stat.executeQuery();
86 if (result.next())
87 {
88 balance = result.getDouble(1);
89 }
90 return balance;
91 }
92 finally
93 {
94 conn.close();
95 }
96 }
97 }
98