This article is a functional extension of the example of a transaction in the previous article to deepen understanding and code proficiency:
(1) Database tables
Data:
(2) Introduction of database connection Jar Package
(3) Tool type:
Package Org.jdbc.util;import Java.io.file;import Java.io.fileinputstream;import java.io.inputstream;import Java.sql.connection;import Java.sql.drivermanager;import Java.sql.resultset;import Java.sql.SQLException;import Java.sql.statement;import java.util.properties;//Operation Database Tool class public class Dbutil {//Privatization construction Method Private Dbutil () {} private static String URL = null; private static String user = null; private static String password = NULL; static {try {Class.forName ("com.mysql.jdbc.Driver"); Properties Pro = new properties (); Pro.load (New FileInputStream ("Src/jdbc.properties")); url = pro.getproperty ("url"); user = Pro.getproperty ("user"); Password = pro.getproperty ("password"); } catch (Exception e) {e.printstacktrace (); }}//Read external properties file to get Connection object, manually enter URL public static Connection getConnection1 (String URL) {Properties pro = new Properties (); ConnectiOn conn = null; InputStream input = null; try {input = new FileInputStream ("E:" + file.separator + "jdbc.properties"); Pro.load (input); conn = drivermanager.getconnection (URL, pro); } catch (Exception e) {e.printstacktrace (); } return conn; }//Read the configuration file under the project, get the Connection object parameters, do not need to manually enter the URL public static Connection GetConnection2 () throws SQLException {Connection conn = drivermanager.getconnection (URL, user, password); Return conn; }//Release all resources public static void CloseAll (Connection conn, Statement Stat, ResultSet rs) throws Sqlexceptio n {if (conn! = null) {conn.close (); } if (stat! = null) {stat.close (); } if (rs! = null) {rs.close (); }}//Release the resource used public static void Closepart (Connection conn, Statement Stat) throws SQLException { IF (conn! = null) { Conn.close (); } if (stat! = null) {stat.close (); } }}
(4) Writing code:
Package Org.jdbc.transcation;import Java.io.bufferedreader;import Java.io.ioexception;import Java.io.inputstreamreader;import Java.sql.connection;import Java.sql.preparedstatement;import Java.sql.ResultSet; Import Java.sql.sqlexception;import Java.util.scanner;import Org.jdbc.util.dbutil;public class AccountDemo {//Main method control operation Row direction public static void main (string[] args) {BufferedReader br = new BufferedReader (New InputStreamReader (System . in)); Scanner scan = new Scanner (system.in); System.out.println ("Welcome to the analog banking interface"); while (true) {System.out.print ("Please enter your choice (1 Transfer 2 Enquiry 3 Deposit 4 Withdrawals 5 account opening 8 exit):"); int chioce; try {chioce = Scan.nextint (); if (Chioce = = 1 | chioce = = 2 | chioce = 3 | chioce==4 | chioce==5 |CHIOCE = 8) {switch (CHIOCE) { Case 1://Transfer System.out.print ("Please enter the name of the transfer account:"); String fromname = Br.readline (); System.out.print ("Please enter the account name:"); String toname = Br.readline (); System.out.print ("Please enter the transfer amount:"); int money = Scan.nextint (); Boolean flag = TransferMoney (FromName, ToName, money); if (flag) {System.out.println ("successful transfer"); Showbalance (ToName); Showbalance (FromName); } else {System.out.println ("Please check that you entered the correct information, please enter the correct information, re-handle this business, thank you!") "); } break; Case 2://Query System.out.print ("Please select (1: Check all account information \t2: Personal account Information):"); int chioce1 = Scan.nextint (); if (Chioce1 = = 1 | chioce1 = = 2) {switch (CHIOCE1) {Case 1://Query full Department account SelectAll (); Break Case 2://Enquiry for Personal account System.out.print ("Please enter enquiry account name:"); String balname = Br.readline (); Selectpart (Balname); Break }} else {System.out.println ("Your options are wrong, please re-enter"); } break; Case 3://Deposit System.out.print ("Please enter deposit account name:"); String savname = Br.readline (); System.out.print ("Please enter Deposit Amount:"); int Savmoney = Scan.nextint (); Boolean issave = Savemoney (Savname, Savmoney); if (issave) {System.out.println ("deposit success"); Showbalance (Savname); } else {SystEm.out.println ("The account information you entered is incorrect, the deposit failed."); } break; Case 4://Withdrawal System.out.print ("Please enter the withdrawal account name:"); String draname = Br.readline (); System.out.print ("Please enter the withdrawal amount:"); int Dramoney = Scan.nextint (); Boolean isdraw = Drawmoney (Draname, Dramoney); if (Isdraw) {System.out.println ("withdrawal success"); Showbalance (Draname); } else {System.out.println ("The account information you entered is incorrect, the withdrawal failed."); } break; Case 5://Withdrawal System.out.print ("Please Enter account name:"); String opname = Br.readline (); System.out.print ("Please enter account opening deposit amount:"); int opbalance = Scan.nextint (); Boolean isOpen =Openaccount (Opname, opbalance); if (IsOpen) {System.out.println ("Congratulations, successful account opening"); System.out.println ("Current account information:"); Selectpart (Opname); } else {System.out.println ("Sorry, an exception occurred, you failed to open an account."); } break; Case 8://Exit the system System.out.println ("Thank You for coming, goodbye!!") "); System.exit (0); }} else {System.out.println ("Your options are wrong, please re-enter"); }} catch (IOException e) {System.out.println ("you have an illegal operation that produces an abnormal phenomenon:" +e.getmessage ()); }}}//Turn Money Method @SuppressWarnings ("resource") public static Boolean TransferMoney (String FromName, String ToName, int money) {Boolean flag = false; PreparedStatement PS = null; Connection conn =Null ResultSet Rs=null; try {conn = Dbutil.getconnection2 (); String sql= "SELECT * from account where name=?"; Ps=conn.preparestatement (SQL); Ps.setstring (1, fromname); Rs=ps.executequery (); Boolean flag1=false; Flag1= Rs.next (); Ps.close (); Ps=conn.preparestatement (SQL); Ps.setstring (1, fromname); Rs=ps.executequery (); Boolean flag2=false; Flag2= Rs.next (); Ps.close (); if ((Flag1 && flag2)!=false) {Conn.setautocommit (false);//Cancel autocommit String sql1 = "Upda Te account set balance=balance-? where name=? "; String sql2 = "Update account set balance=balance+?" where name=? "; PS = conn.preparestatement (SQL1); Ps.setint (1, money); Ps.setstring (2, fromname);//Turn out ps.executeupdate (); Ps.close (); PS = conn.preparestatement (SQL2); Ps.setint (1, money); Ps.setstring (2, toname);//Transfer to Ps.executeupdate (); Conn.commit ();//COMMIT TRANSACTION flag = true; }else{System.out.println ("Sorry, the account you entered is incorrect and cannot be transferred"); }} catch (SQLException e) {e.printstacktrace (); } finally {try {dbutil.closeall (conn, ps,rs); } catch (SQLException e) {e.printstacktrace (); }} return flag; }//All account Query method information public static void SelectAll () {PreparedStatement PS = null; Connection conn = null; ResultSet rs = null; try {conn = Dbutil.getconnection2 ();//Establish connection String sql = "SELECT * from Account"; PS = conn.preparestatement (SQL); rs = Ps.executequery (); System.out.println ("All account information query results are:"); System.out. println ("number \ t name \ t account balance"); while (Rs.next ()) {int id = rs.getint ("id"); String name = rs.getstring ("name"); int balance = Rs.getint ("balance"); System.out.println (id + "\ t" + name + "\ T" + balance); }} catch (SQLException e) {e.printstacktrace (); } finally {try {dbutil.closeall (conn, PS, RS); } catch (SQLException e) {e.printstacktrace (); }}}//Query single account information @SuppressWarnings ("resource") public static void Selectpart (String balname) { PreparedStatement PS = null; Connection conn = null; ResultSet rs = null; try {conn = Dbutil.getconnection2 ();//Establish connection String SQL3 = "SELECT * from account where name=?"; PS = conn.preparestatement (SQL3); Ps.setstring (1, balname); rs = Ps.executequery (); Boolean flag = Rs.neXT (); if (flag = = True) {System.out.println (balname + "account information query result is:"); System.out.println ("the number \ t name \ t account balance"); rs = Ps.executequery (); while (Rs.next ()) {int id = rs.getint ("id"); String name = rs.getstring ("name"); int balance = Rs.getint ("balance"); System.out.println (id + "\ t" + name + "\ T" + balance); }} else {System.out.println ("The account information you entered does not exist, please re-enter ..."); }} catch (SQLException e) {e.printstacktrace (); } finally {try {dbutil.closeall (conn, PS, RS); } catch (SQLException e) {e.printstacktrace (); }}}//Save method public static Boolean Savemoney (String savename, int Savmoney) {Boolean flag = False ; Connection conn = null; PreparedStatement PS = null; String SQL6 = "Update account set balance=balance+?" where name=? "; int count = 0; try {conn = Dbutil.getconnection2 (); PS = conn.preparestatement (SQL6); Ps.setint (1, Savmoney); Ps.setstring (2, savename); Count = Ps.executeupdate (); if (count! = 0) {flag = true; }} catch (SQLException e) {e.printstacktrace (); } finally {try {Dbutil.closepart (conn, PS); } catch (SQLException e) {e.printstacktrace (); }} return flag; }//Take Money method public static Boolean Drawmoney (String drawname, int Dramoney) {Boolean flag = false; Connection conn = null; PreparedStatement PS = null; String SQL7 = "Update account set balance=balance-?" where name=? "; int count = 0; try {conn = Dbutil.getconnection2 (); PS = conn.preparestatement (SQL7); Ps.setint (1, Dramoney); Ps.setstring (2, drawname); Count = Ps.executeupdate (); if (count! = 0) {flag = true; }} catch (SQLException e) {e.printstacktrace (); } finally {try {Dbutil.closepart (conn, PS); } catch (SQLException e) {e.printstacktrace (); }} return flag; }//Create a new account public static Boolean Openaccount (String opname, int opbalance) {Boolean flag = false; Connection conn = null; PreparedStatement PS = null; String sql9 = "INSERT into account (Name,balance) VALUES (?,?)"; int count = 0; try {conn = Dbutil.getconnection2 (); PS = conn.preparestatement (SQL9); Ps.setstring (1, opname); Ps.setint (2, opbalance); Count = Ps.executeupdate (); if (count! = 0) {flag = true; } } catch (SQLException e) {e.printstacktrace (); } finally {try {Dbutil.closepart (conn, PS); } catch (SQLException e) {e.printstacktrace (); }} return flag; }//Show Balance Method @SuppressWarnings ("resource") public static void Showbalance (String showname) {Preparedstateme NT PS = null; Connection conn = null; ResultSet rs = null; try {conn = Dbutil.getconnection2 ();//Establish connection String Sql10 = "Select Balance from account where name= ?"; PS = conn.preparestatement (SQL10); Ps.setstring (1, showname); rs = Ps.executequery (); rs = Ps.executequery (); while (Rs.next ()) {int shbalance = Rs.getint ("balance"); System.out.println (ShowName + "account Current balance is:" +shbalance); }} catch (SQLException e) {e.printstacktrace (); } finally {try {dbutil.closeall (conn, PS, RS); } catch (SQLException e) {e.printstacktrace (); } } }}
Run Result:
Welcome to the Analog banking interface Please enter your choice (1 Transfer 2 Query 3 deposit 4 Withdrawals 5 open account 8 exit): 2 Please select (1: Check all account information 2: Personal account information): 1 All account information query result is: Numbered name account Balance 1 Xiang Yu 350130202 Liu Bang 200029803 li Shimin 476180004 Zhao Kuangyin 239900005 Zhu Yuanzhang 123560006 win politics 322000007 Caocao 2000000008 Sun Quan 14500000 Please enter your choice (1 transfer 2 Enquiry 3 Deposit 4 Withdrawal 5 open account 8 exit): 1 Please enter your account name: Li Shimin Please enter the username: please input the transfer amount: 3000 transfer the current balance of the account is: 200003000 Li Shimin Account current balance is: 47615000 Please enter your choice (1 rpm) Account 2 Enquiry 3 Deposit 4 Withdrawal 5 Account opening 8 exit: 1 Please enter the name of the transfer account: hehe Please enter the account name: haha Please enter the transfer amount: 20000Sorry, you entered the wrong account, can not be transferred processing please check the information you entered is correct, please enter the correct information, re-transact this business, Thank you! Please enter your choice (1 Transfer 2 Enquiry 3 Deposit 4 Withdrawals 5 open account 8 exit): 2 Please select (1: Check all account information 2: Personal account information): 2 Please enter enquiry account name: Liu Bangliubong Account information Query result is: Number name account balance 2 Liu Bang 20002980 please Enter your choice (1 Transfer 2 Query 3 deposit 4 Withdrawals 5 open account 8 exit): 2 Please select (1: Check all account information 2: Personal account information): 3 Your options are wrong, please re-enter please enter your choice (1 Transfer 2 Query 3 deposit 4 Withdrawals 5 Account 8 exit): 2 Please select (1: Check all account information 2: Personal account information): 2 Please enter the account name: haha you entered the account information does not exist, please re-enter: Please enter your choice (1 Transfer 2 Enquiry 3 Deposit 4 Withdrawals 5 open account 8 exit): 3 Please enter the deposit account name: Zhu Yuanzhang Please enter the deposit amount: 300000 deposit successful Zhu Yuanzhang account current balance is: 12656000 Please enter your choice (1 Transfer 2 Query 3 deposit 4 Take Section 5 Account opening 8 exit): 3 Please enter the deposit account name: hehe Please enter the deposit amount: 3300 The account information you entered is incorrect and the deposit failed. Please enter your choice (1 Transfer 2 Enquiry 3 Deposit 4 Withdrawals5 Account opening 8 exit): 4 Please enter the withdrawal account name: Caocao Please enter the withdrawal amount: 250 The current balance of the account is: 200002750 Please enter your choice (1 Transfer 2 Query 3 deposit 4 Withdrawals 5 open account 8 exit): 4 Please enter the withdrawal account name: haha Please enter the withdrawal amount: 200 you lose The account information entered is incorrect, the withdrawal failed. Please enter your choice (1 Transfer 2 Enquiry 3 Deposit 4 Withdrawals 5 open account 8 exit): 5 Please enter the account name: Liyuan Please enter the deposit amount: 300000000 Congratulations, the account is successful. Current account information: Liyuan account information Query result is: Numbered name account balance 9 Liyuan 300 000000 Please enter your choice (1 Transfer 2 Query 3 deposit 4 Withdrawals 5 open account 8 exit): 2 Please select (1: Check all account information 2: Personal account information): 1 All account information query result is: Number name account Balance 1 Xiang Yu 350130202 Liu Bang 200029803 Li Shimin 476150004 Zhao Kuangyin 239900005 Zhu Yuanzhang 126560006 win politics 322000007 Caocao 2000027508 Sun Quan 145000009 Liyuan 30000000 0 Please enter your choice (1 Transfer 2 Query 3 deposit 4 Withdrawals 5 open account 8 exit): 6 Your options are wrong, please re-enter please enter your choice (1 Transfer 2 Query 3 deposit 4 Withdrawals 5 account opening 8 exit): 8 Thank you for coming, goodbye!!
Java Summary (essay)--code summary JDBC and transaction, take bank transfer, audit, etc. for example