准备工作
1.将jar包导入IDEA 的external libraries中并复制到对应project的和src同级的lib目录下。
这里选择File>Project Structure弹出对应页面,选择Export上的+ >jars or directions>找到对应.jar文件选择ok即可。这时,.jar文件导入external libraries,再在src同级建立lib(directory),将external libraries的jar文件复制粘贴到lib即可。至此,JDBC文件配置工作完成。
2.导入junit用于单元测试:和上述流程完全相同。
正确效果图。
系统架构
本项目分为用户模块和管理员模块,其中用户模块包含1.用户查询(按卡号和密码)2.修改信息(分别修改姓名,年龄等信息)3.转账4.转账记录查询5.外币兑换;管理员模块包含1.用户查询(查询所有数据和按姓名查询)2.增加用户3.删除用户。
这两个模块 均设置登录检查,用户模块根据控制台输入的卡号和密码,在数据库进行遍历,如果有该信息则登陆成功,否则失败。
数据库设计部分分为user 和 event两张表,user表记录用户个人信息,event表记录转账记录。
建包如图:
建表如图
user表:
event表:
代码展示
菜单栏:
主菜单
`package com.suoer.bankms.main;
public class MainMenu {
public static void mainMenu(){
System.out.println("*******欢迎使用银行金融管理系统********");
System.out.println("*******声明:本银行立足于美利坚合众国,受北美法律保护,请您放心使用。");
System.out.println("角色选择");
System.out.println("1.管理员");
System.out.println("2.个人用户");
System.out.println("3.退出");
}
}`
管理员菜单
package com.suoer.bankms.admin.menu;
public class AdminMainMenu {
public static void adminMainMenu(){
System.out.println("*******管理员主菜单*******");
System.out.println("\t0.查询所有用户信息");
System.out.println("\t1.查询用户信息");
System.out.println("\t2.增加用户");
System.out.println("\t3.删除用户");
System.out.println("\t4.返回上级");
System.out.println("\t5.退出");
}
}
用户菜单
package com.suoer.bankms.user.menu;
public class UserMainMenu {
public static void userMainMenu(){
System.out.println("*******用户主菜单*******");
System.out.println("\t1.查询用户信息");
System.out.println("\t2.修改部分信息");
System.out.println("\t3.转账");
System.out.println("\t4.转账记录查询");
System.out.println("\t5.外币兑换");
System.out.println("\t6.退出");
}
}
控制栏
主控制栏
package com.suoer.bankms.admin.controller;
import com.suoer.bankms.admin.menu.AdminMainMenu;
import com.suoer.bankms.admin.service.AdminService;
import com.suoer.bankms.main.MainMenu;
import com.suoer.bankms.user.controller.UserMainMenuController;
import com.suoer.bankms.user.menu.UserMainMenu;
import com.suoer.bankms.user.service.UserService;
import com.suoer.bankms.util.OrderCheck;
import java.util.Scanner;
public class MainMenuController {
public void deal(){
Scanner sc=new Scanner(System.in);
String input=sc.nextLine();
int order = OrderCheck.checkOrder(input);
if(order!=-1){
switch (order){
case 1: AdminService service=new AdminService();
System.out.println("请先登录");
if(service.login()){
AdminMainMenu.adminMainMenu();
new AdminMainMenuController().deal();
}else{
System.out.println("管理员名称不存在或密码错误");
MainMenu.mainMenu();
deal();
}
break;
case 2:
UserService service1=new UserService();
System.out.println("请先登录");
if(service1.login()){
UserMainMenu.userMainMenu();
System.out.println(service1.name+" "+service1.password);
new UserMainMenuController().deal(service1.name,service1.password);
}else{
System.out.println("用户名不存在或密码有误");
deal();
}
case 3:System.exit(0);
default:System.out.println("输入有误,请重新输入");
break;
}
}
}
}
管理员控制栏
package com.suoer.bankms.admin.controller;
import com.suoer.bankms.admin.dao.AdminDao;
import com.suoer.bankms.admin.menu.AdminMainMenu;
import com.suoer.bankms.main.MainMenu;
import com.suoer.bankms.user.module.User;
import com.suoer.bankms.util.OrderCheck;
import java.util.Scanner;
public class AdminMainMenuController {
public void deal(){
Scanner sc=new Scanner(System.in);
String input=sc.nextLine();
int order= OrderCheck.checkOrder(input);
if(order!=-1){
switch (order){
case 0:System.out.println(new AdminDao().selectAll());
AdminMainMenu.adminMainMenu();
deal();
break;
case 1:
Scanner sc1=new Scanner(System.in);
System.out.println("请输入用户姓名");
String name=sc1.next();
System.out.println(new AdminDao().selectByName(name));
AdminMainMenu.adminMainMenu();
deal();
break;
case 2:
Scanner sc2=new Scanner(System.in);
System.out.println("请输入id,姓名,密码,银行,账户,身份证,性别,年龄,籍贯,手机号,本地存款,外币存款");
String id=String.valueOf(sc2.nextInt());
String name1=sc2.next();
String password=String.valueOf(sc2.nextInt());
// String accountname=sc2.next();
String bank= sc2.next();
String account=sc2.next();
String IDcard=String.valueOf(sc2.nextInt());
String sex=sc2.next();
int age=sc2.nextInt();
String native_place=sc2.next();
String phone_number=String.valueOf(sc2.nextInt());
int native_sum=sc2.nextInt();
int foreign_sum=sc2.nextInt();
new AdminDao().add(new User(id,name1,password,bank,account,IDcard,sex,age,native_place,phone_number,native_sum,foreign_sum));
AdminMainMenu.adminMainMenu();
deal();
break;
case 3:
Scanner sc3=new Scanner(System.in);
System.out.println("请输入待删除用户的姓名,身份证号");
String name2=sc3.next();
String IDcard1=String.valueOf(sc3.nextInt());
System.out.println(new AdminDao().delete(name2,IDcard1));
AdminMainMenu.adminMainMenu();
deal();
break;
case 4:
MainMenu.mainMenu();
new MainMenuController().deal();
break;
case 5:System.exit(0);
default:System.out.println("输入有误,请重新输入");
break;
}
}
}
}
用户控制栏
package com.suoer.bankms.user.controller;
import com.sun.jdi.NativeMethodException;
import com.suoer.bankms.main.MainMenu;
import com.suoer.bankms.user.dao.UserDao;
import com.suoer.bankms.user.menu.UserMainMenu;
import com.suoer.bankms.user.module.User;
import com.suoer.bankms.util.OrderCheck;
import java.util.Scanner;
public class UserMainMenuController {
public void deal(String name,String password){
Scanner sc=new Scanner(System.in);
String input=sc.nextLine();
int order= OrderCheck.checkOrder(input);
if(order!=-1){
switch (order){
case 1:
Scanner newsc=new Scanner(System.in);
System.out.println("请输入银行卡号 密码:");
String account= String.valueOf(newsc.nextInt());
String password1=String.valueOf(newsc.nextInt());
User user = new UserDao().selectByNameAndPassword(account, password1);
System.out.println(user);
UserMainMenu.userMainMenu();
deal(name,password);
break;
case 2:
System.out.println("请选择要修改的信息:");
System.out.println("1.姓名");
System.out.println("2.年龄");
System.out.println("3.籍贯");
System.out.println("4.手机号");
Scanner sc1=new Scanner(System.in);
String input1 = sc1.nextLine();
int order1 = OrderCheck.checkOrder(input1);
if(order1!=-1){
switch (order1){
case 1:
Scanner namesc=new Scanner(System.in);
System.out.println("请输入新的姓名:");
String newname=namesc.next();
new UserDao().updateByNameAndPassword1(name,password,newname);
UserMainMenu.userMainMenu();
deal(name,password);
break;
case 2:
Scanner agesc=new Scanner(System.in);
System.out.println("请输入新的年龄:");
int newage=agesc.nextInt();
new UserDao().updateByNameAndPassword2(name,password,newage);
UserMainMenu.userMainMenu();
deal(name,password);
break;
case 3:
Scanner nativesc=new Scanner(System.in);
System.out.println("请输入新的籍贯:");
String newnative=nativesc.next();
new UserDao().updateByNameAndPassword3(name,password,newnative);
UserMainMenu.userMainMenu();
deal(name,password);
break;
case 4:
Scanner phonesc=new Scanner(System.in);
System.out.println("请输入新的手机号:");
String newphone=String.valueOf(phonesc.nextInt());
new UserDao().updateByNameAndPassword4(name,password,newphone);
UserMainMenu.userMainMenu();
deal(name,password);
break;
default:System.out.println("输入有误,请重新输入");
break;
}
}
System.out.println("输入有误,请重新输入");
UserMainMenu.userMainMenu();
deal(name,password);
break;
case 3:
Scanner sc2=new Scanner(System.in);
System.out.println("请输入你的姓名,你的密码,对方姓名,身份证号,转账金额");
String myname=sc2.next();
String mypassword=String.valueOf(sc2.nextInt());
String hisname=sc2.next();
String hisIDcard=String.valueOf(sc2.nextInt());
int num=sc2.nextInt();
new UserDao().transfer(myname,mypassword,hisname,hisIDcard,num);
UserMainMenu.userMainMenu();
deal(name,password);
break;
case 4:
System.out.println(new UserDao().selectEvents(name));
UserMainMenu.userMainMenu();
deal(name,password);
break;
case 5:
System.out.println("请输入姓名和转账金额");
Scanner scanner=new Scanner(System.in);
String name3=scanner.next();
float amount=scanner.nextInt();
System.out.println( new UserDao().exChange(name3,amount));
break;
case 6:System.exit(0);
break;
default:System.out.println("输入有误,请重新输入");
break;
}
}
}
}
登录检查(service)
管理员检查
package com.suoer.bankms.admin.service;
import java.util.Scanner;
public class AdminService {
private static Scanner sc=new Scanner(System.in);
public boolean login(){
System.out.println("请输入用户名");
String username=sc.nextLine();
System.out.println("请输入密码");
String password=sc.nextLine();
if(username.equals("jack")&&password.equals("123"))
return true;
else return false;
}
}
用户检查
package com.suoer.bankms.user.service;
import com.suoer.bankms.util.DButil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;
public class UserService {
private static Scanner sc=new Scanner(System.in);
public String name;
public String password;
public boolean login(){
System.out.println("请输入用户名");
name=sc.nextLine();
System.out.println("请输入密码");
password=sc.nextLine();
Connection connection= DButil.getConnection();
String sql="select name,password from user";
try{
PreparedStatement ps=connection.prepareStatement(sql);
ResultSet set = ps.executeQuery();
while(set.next()){
String uname = set.getString(1);
String upassword=set.getString(2);
if(uname.equals(name)&&upassword.equals(password))return true;
}
}catch (Exception e){
e.printStackTrace();
}
return false;
}
}
数据库表对应类
User类
package com.suoer.bankms.user.module;
public class User {
private String id;
private String name;
private String password;
private String bank;
private String account;
private String IDcard;
private String sex;
private int age;
private String native_place;
private String phone_number;
private int native_sum;
private int foreign_sum;
public User(){
}
public User(String id, String name, String password, String bank, String account, String IDcard,String sex,int age, String native_place, String phone_number, int native_sum, int foreign_sum) {
this.id = id;
this.name = name;
this.password = password;
this.bank = bank;
this.account = account;
this.IDcard = IDcard;
this.sex = sex;
this.age = age;
this.native_place = native_place;
this.phone_number = phone_number;
this.native_sum = native_sum;
this.foreign_sum = foreign_sum;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getBank() {
return bank;
}
public void setBank(String bank) {
this.bank = bank;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getIDcard() {
return IDcard;
}
public void setIDcard(String IDcard) {
this.IDcard = IDcard;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getNative_place() {
return native_place;
}
public void setNative_place(String native_place) {
this.native_place = native_place;
}
public String getPhone_number() {
return phone_number;
}
public void setPhone_number(String phone_number) {
this.phone_number = phone_number;
}
public int getNative_sum() {
return native_sum;
}
public void setNative_sum(int native_sum) {
this.native_sum = native_sum;
}
public int getForeign_sum() {
return foreign_sum;
}
public void setForeign_sum(int foreign_sum) {
this.foreign_sum = foreign_sum;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", password='" + password + '\'' +
", bank='" + bank + '\'' +
", account='" + account + '\'' +
", IDcard='" + IDcard + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
", native_place='" + native_place + '\'' +
", phone_number='" + phone_number + '\'' +
", native_sum=" + native_sum +
", foreign_sum=" + foreign_sum +
'}';
}
}
Event类
package com.suoer.bankms.user.module;
import java.sql.Date;
public class Event {
private int id;
private String name;
private int account_in;
private int account_out;
private Date date;
public Event(){
}
public Event(int id, String name, int account_in, int account_out, Date date) {
this.id = id;
this.name = name;
this.account_in = account_in;
this.account_out = account_out;
this.date = date;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAccount_in() {
return account_in;
}
public void setAccount_in(int account_in) {
this.account_in = account_in;
}
public int getAccount_out() {
return account_out;
}
public void setAccount_out(int account_out) {
this.account_out = account_out;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "Event{" +
"id=" + id +
", name='" + name + '\'' +
", account_in=" + account_in +
", account_out=" + account_out +
", date=" + date +
'}';
}
}
DAO类
用户DAO
package com.suoer.bankms.user.dao;
import com.suoer.bankms.user.module.Event;
import com.suoer.bankms.user.module.User;
import com.suoer.bankms.util.DButil;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
private static Connection connection= DButil.getConnection();
private final float rate= (float) 6.7;
//查询个人信息
public User selectByNameAndPassword(String account,String password){
String sql="select * from user where account = ? and password = ?";
try{
PreparedStatement ps=connection.prepareStatement(sql);
ps.setString(1,account);
ps.setString(2,password);
ResultSet set = ps.executeQuery();
if(set.next()){
String id=set.getString(1);
String name=set.getString(2);
String bank=set.getString(4);
String IDcard=set.getString(6);
String sex=set.getString(7);
int age=set.getInt(8);
String native_place=set.getString(9);
String phone_number=set.getString(10);
int native_sum=set.getInt(11);
int foreign_sum=set.getInt(12);
return new User(id,name,password,bank,account,IDcard,sex,age,native_place,phone_number,native_sum,foreign_sum);
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}
//修改部分信息--姓名
public boolean updateByNameAndPassword1(String name,String password,String newname){
String sql="update user set name= ? where name = ? and password = ?";
try{
PreparedStatement ps=connection.prepareStatement(sql);
ps.setString(1,newname);
ps.setString(2,name);
ps.setString(3,password);
int i = ps.executeUpdate();
if(i>0) {
System.out.println("修改成功");
return true;
}
}catch (Exception e){
e.printStackTrace();
}
System.out.println("修改失败");
return false;
}
//修改部分信息--年龄
public boolean updateByNameAndPassword2(String name,String password,int newage){
String sql="update user set age = ? where name = ? and password = ?";
try{
PreparedStatement ps=connection.prepareStatement(sql);
ps.setInt(1,newage);
ps.setString(2,name);
ps.setString(3,password);
int i = ps.executeUpdate();
if(i>0) {
System.out.println("修改成功");
return true;
}
}catch (Exception e){
e.printStackTrace();
}
System.out.println("修改失败");
return false;
}
//修改部分信息--籍贯
public boolean updateByNameAndPassword3(String name,String password,String newnative_place){
String sql="update user set native_place = ? where name = ? and password = ?";
try{
PreparedStatement ps=connection.prepareStatement(sql);
ps.setString(1,newnative_place);
ps.setString(2,name);
ps.setString(3,password);
int i = ps.executeUpdate();
if(i>0) {
System.out.println("修改成功");
return true;
}
}catch (Exception e){
e.printStackTrace();
}
System.out.println("修改失败");
return false;
}
//修改部分信息--手机号
public boolean updateByNameAndPassword4(String name,String password,String phone){
String sql="update user set phone_number = ? where name = ? and password = ?";
try{
PreparedStatement ps=connection.prepareStatement(sql);
ps.setString(1,phone);
ps.setString(2,name);
ps.setString(3,password);
int i = ps.executeUpdate();
if(i>0) {
System.out.println("修改成功");
return true;
}
}catch (Exception e){
e.printStackTrace();
}
System.out.println("修改失败");
return false;
}
//转账
public void transfer(String myname,String password,String hisname,String IDcard,int num){
String sql1="update user set native_sum=native_sum-? where name = ? and password = ?";
String sql2="update user set native_sum=native_sum+? where name = ? and IDcard = ?";
String sql3="insert into event(name,account_in,account_out,date) values(?,?,?,?)";
try{
PreparedStatement ps1=connection.prepareStatement(sql1);
ps1.setInt(1,num);
ps1.setString(2,myname);
ps1.setString(3,password);
PreparedStatement ps2=connection.prepareStatement(sql2);
ps2.setInt(1,num);
ps2.setString(2,hisname);
ps2.setString(3,IDcard);
PreparedStatement ps3=connection.prepareStatement(sql3);
ps3.setString(1,myname);
ps3.setInt(2,-num);
ps3.setInt(3,num);
Date date=new Date(System.currentTimeMillis());
ps3.setDate(4,new java.sql.Date(date.getTime()));
if(ps1.executeUpdate()>0&&ps2.executeUpdate()>0&&ps3.executeUpdate()>0)System.out.println("转账成功");
else System.out.println("转账失败");
System.out.println(selectByNameAndPassword(myname,password));
}catch (Exception e){
e.printStackTrace();
}
}
//查询转账记录
public List<Event> selectEvents(String name){
List<Event> list=new ArrayList<>();
String sql="select * from event where name = ?";
try{
PreparedStatement ps=connection.prepareStatement(sql);
ps.setString(1,name);
ResultSet set = ps.executeQuery();
while(set.next()){
int id=set.getInt(1);
int account_in=set.getInt(3);
int account_out=set.getInt(4);
Date date=new Date(set.getDate(5).getTime());
list.add(new Event(id,name,account_in,account_out,date));
}
return list;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
//外币兑换
//5.外币兑换
public boolean exChange(String name,float amount){//账户 需要兑换外币的数量
//定义动态sql语句(update语句)
String sql1="select native_sum,foreign_sum from user where name=?";
String sql2="update user set native_sum=? ,foreign_sum=? where name=? ";
//获取汇率
float nativeAmount = 0;//本币余额
float foreignAmount = 0;//外币余额
try {
//获取预编译对象
PreparedStatement ps1 = connection.prepareStatement(sql1);
//设置占位符的值
ps1.setString(1,name);
//执行SQL语句
ResultSet resultSet = ps1.executeQuery();
if(resultSet.next()){
nativeAmount=resultSet.getFloat(1);//native_sum返回值是String还是float
foreignAmount=resultSet.getFloat(2);
}
if(nativeAmount-amount>=0){
//如果余额足够则继续执行
PreparedStatement ps2 = connection.prepareStatement(sql2);
ps2.setFloat(1, nativeAmount-amount);
ps2.setFloat(2,foreignAmount+amount*rate);
ps2.setString(3,name);
int result=ps2.executeUpdate();
if(result>0){
System.out.printf("兑换成功!国内账户余额:%f,国外账号余额:%f",nativeAmount-amount,foreignAmount+amount*rate);
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.printf("兑换失败!国内账户余额:%f,国外账号余额:%f",nativeAmount,foreignAmount);
return false;
}
}
管理员DAO
package com.suoer.bankms.admin.dao;
import com.suoer.bankms.user.module.User;
import com.suoer.bankms.util.DButil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class AdminDao {
private static Connection connection= DButil.getConnection();
//查询所有用户信息
public List<User> selectAll(){
List<User> list= new ArrayList<>();
String sql="select* from user ";
try {
PreparedStatement ps= connection.prepareStatement(sql);
ResultSet set = ps.executeQuery();
while(set.next()){
String id=String.valueOf(set.getInt(1));
String name=set.getString(2);
String password=set.getString(3);
String bank =set.getString(4);
String account=set.getString(5);
String IDcard=set.getString(6);
String sex=set.getString(7);
int age = set.getInt(8);
String native_place=set.getString(9);
String phone_number=set.getString(10);
int native_sum= (int) set.getFloat(11);
int foreign_sum= (int) set.getFloat(12);
list.add(new User(id,name,password,bank,account,IDcard,sex,age,native_place,phone_number,native_sum,foreign_sum));
}
return list;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
//按姓名查询用户信息
public User selectByName(String name){
String sql="select * from user where name = ?";
try{
PreparedStatement ps=connection.prepareStatement(sql);
ps.setString(1,name);
ResultSet set = ps.executeQuery();
if(set.next()){
String id=set.getString(1);
String password=set.getString(3);
String bank=set.getString(4);
String account=set.getString(5);
String IDcard=set.getString(6);
String sex=set.getString(7);
int age=set.getInt(8);
String native_place=set.getString(9);
String phone_number=set.getString(10);
int native_sum=set.getInt(11);
int foreign_sum=set.getInt(12);
return new User(id,name,password,bank,account,IDcard,sex,age,native_place,phone_number,native_sum,foreign_sum);
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}
//添加用户信息
public boolean add(User user){
String sql="INSERT INTO USER(id,NAME,PASSWORD,bank,ACCOUNT,IDcard,sex,age,native_place,phone_number,native_sum,foreign_sum) values(?,?,?,?,?,?,?,?,?,?,?,?)";
try {
PreparedStatement ps=connection.prepareStatement(sql);
ps.setString(1,user.getId());
ps.setString(2, user.getName());
ps.setString(3, user.getPassword());
ps.setString(4, user.getBank());
ps.setString(5, user.getAccount());
ps.setString(6, user.getIDcard());
ps.setString(7, user.getSex());
ps.setInt(8,user.getAge());
ps.setString(9,user.getNative_place());
ps.setString(10,user.getPhone_number());
ps.setInt(11,user.getNative_sum());
ps.setInt(12,user.getForeign_sum());
if(ps.executeUpdate()>0)return true;
}catch (Exception e){
e.printStackTrace();
}
return false;
}
//删除用户信息
public boolean delete(String name ,String IDcard){
String sql="delete from user where name=? and IDcard =?";
try{
PreparedStatement ps=connection.prepareStatement(sql);
ps.setString(1,name);
ps.setString(2,IDcard);
if(ps.executeUpdate()>0)return true;
}catch (Exception e){
e.printStackTrace();
}
return false;
}
}
数据库连接(工具类)
package com.suoer.bankms.util;
import java.sql.Connection;
import java.sql.DriverManager;
public class DButil {
public static Connection getConnection(){
Connection connection=null;
final String URL = "jdbc:mysql://localhost:3306/bankms?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
final String DRIVER="com.mysql.cj.jdbc.Driver";
final String USER="root";
final String PASSWORD="QTqt_456852";
try{
Class.forName(DRIVER);
connection= DriverManager.getConnection(URL,USER,PASSWORD);
}catch (Exception e){
e.printStackTrace();
}
return connection;
}
public static void main(String[] args) {
System.out.println(getConnection());
}
}
ordercheck方法
package com.suoer.bankms.util;
public class OrderCheck {
public static int checkOrder(String input){
if(input.matches("\\d")){
return Integer.parseInt(input);
}else return -1;
}
}
知识点总结
数据库连接
数据库连接分为加载驱动、注册驱动和获取连接:
@Test
public void testConnection4() {
try {
//1.数据库连接的4个基本要素:
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "abc123";
String driverName = "com.mysql.jdbc.Driver";
//2.加载驱动 (①实例化Driver ②注册驱动)
Class.forName(driverName);
//Driver driver = (Driver) clazz.newInstance();
//3.注册驱动
//DriverManager.registerDriver(driver);
/*
可以注释掉上述代码的原因,是因为在mysql的Driver类中声明有:
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
*/
//3.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
} catch (Exception e) {
e.printStackTrace();
}
}
DAO中涉及的方法有
String sql1="select native_sum,foreign_sum from user where name=?";//SQL语句
//获取预编译对象
PreparedStatement ps1 = connection.prepareStatement(sql1);
//设置占位符的值
ps1.setString(1,name);
//执行SQL语句
ResultSet resultSet = ps1.executeQuery();
java和sql的Date类型转换:
java.sql中有Date、Timestamp、Time三个类,分别显示年月日、年月日时分秒、时分秒。
java.util中有Date类。
转换方式如代码所示:
@Test
public void datetest(){
Date date=new Date();//该空参构造器实际上调用Date(Long long),参数为System.currentTimeMillis()
System.out.println(date);
System.out.println(date.getTime());
java.sql.Date sqldate=new java.sql.Date(date.getTime());
System.out.println(sqldate);
Timestamp timestamp=new Timestamp(date.getTime());
System.out.println(timestamp);
Date date1=new Date(sqldate.getTime());
System.out.println(date1);
}
打印:
System类中的exit()方法:
此方法用于终止JVM,status=0表示正常终止,否则为异常终止.
此方法效果上等于直接调用Runtime.getRuntime().exit(status);
public static void exit(int status) {
Runtime.getRuntime().exit(status);
}
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎