JDBC MySQL 实例之 用户管理系统
1 Java 和 MySQL 怎么建立连接
2 通过Java怎么对数据库进行操作
package day01; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; /**
* 用户登录系统
* Description:
*/
public class Service {
private static final int USER_REG = 1;
private static final int USER_LOGIN = USER_REG + 1;
private static final int USER_UPDATE = USER_LOGIN + 1;
private static final int USER_DELETE = USER_UPDATE + 1;
private static final int USER_INFO = USER_DELETE + 1;
private static final int USER_TRANSFER = USER_INFO + 1;
private static final int USER_QUIT = USER_TRANSFER + 1;
private static final int EXIT = USER_QUIT + 1; UserInfo user = null; public static void main(String[] args) {
Service serv = new Service();
serv.start();
} private void start() {
welcome();
int code = getCode();
execute(code);
} /**
* 执行选择
* Description:
*/
private void execute(int code) {
switch (code) {
case USER_REG:
user_reg();
break;
case USER_LOGIN:
user_login();
break;
case USER_UPDATE:
user_update();
break;
case USER_DELETE:
user_delete();
break;
case USER_INFO:
user_info();
break;
case USER_TRANSFER:
user_transfer();
break;
case USER_QUIT:
user_quit();
break;
case EXIT:
exit();
break;
default:
System.out.println("输入错误,请重新输入");
start();
break;
}
} /**
* Description:
*/
private void exit() {
// TODO Auto-generated method stub
if(null != this.user) {
System.out.println("当前用户还没有退出,所以执行自动退出当前用户");
user_quit();
}else {
System.out.println("你选择了退出系统");
System.out.println("系统退出成功");
} } /**
* 退出当前用户
* Description:
*/
private void user_quit() {
// TODO Auto-generated method stub
if(null != this.user) {
System.out.println("你选择了退出当前用户功能");
this.user = null;
if(null == this.user) {
System.out.println("成功退出当前用户");
}else {
System.out.println("退出当前用户失败");
}
}else {
System.out.println("你还没有登录成功,还不能使用该功能");
System.out.println("请登录!");
user_login();
}
start();
} /**
* 转账功能
* Description:
*/
private void user_transfer() {
// TODO Auto-generated method stub
if(null != this.user) {
System.out.println("你选择了转账功能!");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入转入账户的用户名:");
String name = scanner.nextLine();
System.out.println("请输入转账金额:");
int money = Integer.parseInt(scanner.nextLine()); Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test",
"root",
"182838");
Statement state = conn.createStatement(); //转出
String out_sql = "UPDATE userinfo_fury "
+ "SET account = account - '"+money+"' "
+ "WHERE username = '"+this.user.getUsername()+"' ";
int judge01 = state.executeUpdate(out_sql);
if(judge01 > 0) {
System.out.println("转出成功");
}else {
System.out.println("转出失败");
} //转入
String in_sql = "UPDATE userinfo_fury "
+ "SET account = account + '"+money+"' "
+ "WHERE username = '"+name+"' ";
int judge02 = state.executeUpdate(in_sql);
if(judge02 > 0) {
System.out.println("转入成功");
}else {
System.out.println("转入失败");
}
}catch(Exception e) {
e.printStackTrace();
}finally {
if(null != conn) {
try {
conn.close();
}catch(SQLException e1) {
e1.printStackTrace();
}
}
}
}else {
System.out.println("请先登录!");
user_login();
}
start();
} /**
* 查询表中的所有数据
* Description:
*/
private void user_info() {
// TODO Auto-generated method stub
if(null != this.user) {
System.out.println("你选择了查询所有用户功能!");
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test",
"root",
"182838");
Statement state = conn.createStatement();
String sql = "SELECT id,username,password,email,nickname,account "
+ "FROM userinfo_fury ";
ResultSet rs = state.executeQuery(sql);
List<UserInfo> list = new ArrayList<UserInfo>(); while(rs.next()) {
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
String email = rs.getString("email");
String nickname = rs.getString("nickname");
double account = rs.getDouble("account");
UserInfo userinfo = new UserInfo(id, username, password, email, nickname, account);
list.add(userinfo);
}
for(UserInfo lis : list) {
System.out.println(lis);
}
}catch(Exception e) {
e.printStackTrace();
}finally {
if(null != conn) {
try {
conn.close();
}catch(SQLException e1) {
e1.printStackTrace();
}
}
}
}else {
System.out.println("请先登录");
user_login();
}
start();
} /**
* 删除用户
* Description:
*/
private void user_delete() {
// TODO Auto-generated method stub
if(null != this.user) {
System.out.println("你选择了删除用户功能");
System.out.println("你不是超级用户,你无法使用删除用户功能");
}else {
System.out.println("请先登录!");
user_login();
}
start();
} /**
* 修改用户信息
* Description:
*/
private void user_update() {
// TODO Auto-generated method stub
if(null != this.user) {
System.out.println("你选择了修改当前用户功能!");
//可改进 -->> 可由用户选择需要修改的字段
System.out.println("你当前的昵称为:" + this.user.getNickname());
Scanner scanner = new Scanner(System.in);
System.out.println("你想将你的昵称修改为:");
String nickname = scanner.nextLine(); Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test",
"root",
"182838");
Statement state = conn.createStatement(); String sql = "UPDATE userinfo_fury "
+ "SET nickname = '"+nickname+"' "
+ "WHERE username = '"+this.user.getUsername()+"' ";
int judge = state.executeUpdate(sql);
if(judge > 0) {
this.user.setNickname(nickname);
System.out.println("修改昵称成功,当前昵称为:" + this.user.getNickname());
}else {
System.out.println("修改昵称失败");
}
}catch(Exception e) {
e.printStackTrace();
}finally {
if(null != conn) {
try {
conn.close();
}catch(SQLException e1) {
e1.printStackTrace();
}
}
}
}else {
System.out.println("请登录成功后在进行此操作!");
user_login();
}
start();
} /**
* 用户登录
* Description:
*/
private void user_login() {
// TODO Auto-generated method stub
System.out.println("你选择了用户登录功能!");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine(); Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test",
"root",
"182838");
Statement state = conn.createStatement(); String sql = "SELECT id, username, password,email, nickname,account "
+ "FROM userinfo_fury "
+ "WHERE username = '"+username+"' "
+ "AND password = '"+password+"' ";
System.out.println(sql);
ResultSet rs = state.executeQuery(sql);
if(rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("username");
String word = rs.getString("password");
String email = rs.getString("email");
String nickname = rs.getString("nickname");
double account = rs.getDouble("account");
UserInfo userinfo = new UserInfo(id, name, word, email, nickname, account);
this.user = userinfo;
System.out.println("登录成功,你的昵称为:" + this.user.getNickname());
}else {
System.out.println("登录失败:" + this.user);
}
/*
* 注意:
* 当用户输入的密码个的格式是: 任意字符' or '数值开头 时无论用户名和密码正确与否,都会登录成功
* 因为 如果这样输入就改变了 SQL 语句的原意(在SQL语句中AND的优先级要高于OR)
* 实例 : asdfaer1234' or '1
*/
}catch(Exception e) {
e.printStackTrace();
}finally {
if(null != conn) {
try {
conn.close();
}catch(SQLException e1) {
e1.printStackTrace();
}
}
}
start();
} /**
* 用户注册
* Description:
*/
private void user_reg() {
System.out.println("你选择了用户注册功能!");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine();
System.out.println("请输入邮箱:");
String email = scanner.nextLine();
System.out.println("请输入昵称:");
String nickname = scanner.nextLine();
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test",
"root",
"182838");
Statement state = conn.createStatement();
String sql = "INSERT INTO userinfo_fury "
+ "(username,password,email,nickname) "
+ "VALUES "
+ "('"+username+"','"+password+"','"+email+"','"+nickname+"')";
int judge = state.executeUpdate(sql);
if(judge > 0) {
System.out.println("注册成功");
}else {
System.out.println("注册失败");
}
}catch(Exception e) {
e.printStackTrace();
}finally {
if(null != conn) {
try {
conn.close();
}catch(SQLException e1) {
e1.printStackTrace();
}
}
}
start();
} /**
* 功能选择
* Description:
*/
private int getCode() {
System.out.println("请选择功能:");
Scanner scanner = new Scanner(System.in);
int code = Integer.parseInt(scanner.nextLine());
return code;
} /**
* 界面信息
* Description:
*/
private void welcome() {
System.out.println("欢迎使用用户登录系统!");
System.out.println("请输入需要操作的功能序号");
System.out.println("======================");
System.out.println("================");
System.out.println("1 : 用户注册");
System.out.println("2 : 用户登录");
System.out.println("3 : 修改用户信息");
System.out.println("4 : 删除用户");
System.out.println("5 : 查看所有用户信息");
System.out.println("6 : 转账业务");
System.out.println("7 : 用户退出");
System.out.println("8 : 退出系统");
System.out.println("================");
System.out.println("======================");
}
}
用户管理系统
3 改进
改程序是典型的 高耦合、低内聚, 改进之处很多很多...
三少今天有点懒,笔记待更新...
2017年4月5日19:42:31
JDBC MySQL 实例之 用户管理系统的更多相关文章
- JDK+JDBC+MySQL实例及注意事项
by qx.zhong Hangzhou 29 Jun 2014 开发环境 OS: Win8.1 x64 JDK: 1.8 SE DB: MySQL 5.5 Lib: mysql-connec ...
- JSP+Struts2+JDBC+Mysql实现的校园宿舍管理系统
项目简介 项目来源于:https://gitee.com/passenger134/javaweb-sushe 本系统基于JSP+Struts2+JDBC+Mysql的校园宿舍管理系统.该系统没有使用 ...
- JDBC + MySQL 示例
jdbc mysql connection 教程 翻译自:JDBC MySQL Connection Tutorial Java Database Connectivity (JDBC) 是一个基于J ...
- Maven+JSP+Servlet+JDBC+Mysql实现的dbExper宾馆管理系统
本文存在视频版本,请知悉 项目简介 项目来源于:https://github.com/mafulong/databaseExper-hotelMaster 这次分享的也是毕设或课程设计选择一样很多的宾 ...
- JSP+Servlet+JDBC+Mysql实现的天才会议管理系统
本文存在视频版本,请知悉 项目简介 项目来源于:https://github.com/hegexunmeng/meeting-system 这次分享一个会议管理系统,前端后端几乎没有使用任何框架,适合 ...
- JSP+Servlet+JDBC+mysql实现的学生成绩管理系统
项目简介 项目来源于:https://gitee.com/zzdoreen/SSMS 本系统基于JSP+Servlet+Mysql 一个基于JSP+Servlet+Jdbc的学生成绩管理系统.涉及技术 ...
- MySQL创建新用户、增加账户的2种方法及使用实例
可以用两种方式创建MySQL账户:1.使用GRANT语句2.直接操作MySQL授权表最好的方法是使用GRANT语句,因为这样更精确,错误少.创建超级用户: mysql> GRANT ALL PR ...
- mySQL (关系型数据库管理系统)
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RD ...
- ssh框架的小实例(用户登录)
刚学SSH框架写一个小实例,以便以后查看: 本案例简单的实现一个用户登录: 数据库方面就不写了,自己领悟吧!哈哈(根据user.hbm.xml文件就知道了) 我们一般可以创建下面几个包,什么意思呢,自 ...
随机推荐
- dilworth定理的通俗讲解
度娘定义:在数学理论中的序理论与组合数学中,Dilworth定理根据序列划分的最小数量的链描述了任何有限偏序集的宽度.其名称取自数学家Robert P. Dilworth. 反链是一种偏序集,其任意两 ...
- Yii的常用URL和渲染方法
当前页面url Yii::app()->request->url;跳转前一个页面url $this->redirect(Yii::app()->request->url ...
- bzoj 5210 最大连通子块和——动态DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5210 似乎像bzoj4712一样,依然可以用别的方法做.但还是只写了动态DP. 当然是dp[ ...
- POJ3468:A Simple Problem with Integers
浅谈分块:https://www.cnblogs.com/AKMer/p/10369816.html 题目传送门:http://poj.org/problem?id=3468 分块裸题.对于每个块记录 ...
- win32 获取本机网卡信息(MAC地址,IP地址等)
由于一个需求需要获取网卡的MAC地址,就搜了一下,大部分都是COPY来COPY去的一些代码,有很多甚至不能直接运行或有还有内存泄漏.自己查了一下MSDN然后封装了一下: 需要注意,一个机器可能有多个网 ...
- What makes an inferred latch? how To avoid creating inferred latches? when do you know you need latches?
What makes an inferred latch?For combinatorial logic, the output of the circuit is a function of inp ...
- Azure disk iops的测试
在Public Cloud中,VM.Storage和Network是IaaS的三大基础.本文将介绍在Azure的VM上测试磁盘IOPS的工具和方法. 一.添加磁盘.初始化磁盘 1.添加磁盘 把相应的信 ...
- Java 字符串和时间互相转化 +时间戳
一:字符串转换成date String datatime="2015-09-22 15:16:48"; SimpleDateFormat form = new SimpleDate ...
- 关于移动端的一些tip
移动端的一些tip 开发相关 关于viewport <meta name="viewport" content="name=value,name=value&quo ...
- 机器学习:集成学习(集成学习思想、scikit-learn 中的集成分类器)
一.集成学习的思想 集成学习的思路:一个问题(如分类问题),让多种算法参与预测(如下图中的算法都可以解决分类问题),在多个预测结果中,选择出现最多的预测类别做为该样本的最终预测类别: 生活中的集成思维 ...