java增删改查控制台_Java 使用控制台操作实现数据库的增删改查

使用控制台进行数据库增删改查操作,首先创建一个Java Bean类,实现基础数据的构造,Get,Set方法的实现,减少代码重复性。

基本属性为 学生学号 Id, 学生姓名 Name,学生性别 Sex, 学生年龄 Age

1 public classStudent {2

3 //学生类需要的属性,都是私有的

4 privateString Id;5 privateString Name;6 privateString Sex;7 privateString Age;8

9 //Get Set 方法的实现

10 publicString getId() {11 returnId;12 }13 public voidsetId(String id) {14 Id =id;15 }16 publicString getName() {17 returnName;18 }19 public voidsetName(String name) {20 Name =name;21 }22 publicString getSex() {23 returnSex;24 }25 public voidsetSex(String sex) {26 Sex =sex;27 }28 publicString getAge() {29 returnAge;30 }31 public voidsetAge(String age) {32 Age =age;33 }34 //构造方法

35 publicStudent(String id, String name, String sex, String age) {36 super();37 Id =id;38 Name =name;39 Sex =sex;40 Age =age;41 }42 publicStudent(String string, String string2, String string3) {43 //TODO Auto-generated constructor stub

44 this.Id=null;45 this.Name=string;46 this.Age=string3;47 this.Sex=string2;48 }49

50

51 }

其次是Java Dao类,实现对数据库的连接,和通过sql语句实现增删改查。

getRowCount 获取行的数量

getColumnCount获取列的数量

//接口

Connection conn= null;

//加载 JDBC 桥的驱动程序

Class.forName("com.mysql.cj.jdbc.Driver");

String url="jdbc:mysql://localhost:3306/user? serverTimezone=UTC&characterEncoding=UTF-8&useSSL=false";

(user 处 为数据库名称)

String username = "root";

String password = "101032";

//使用sql 包中的 Connection 接口,通过DriverManger 类的静态方法getConnection()创建连接对象

conn=DriverManager.getConnection(url,username,password);

String sql="insert into students(Name,Sex,Age) values(?,?,?)";

PreparedStatement pstmt; (PreparedStatement类型执行 为动态sql 语句

如 插入 insert 更新 update 删除 delete)

execute(String sql) 执行sql语句 返回 ResultSet 对象

executeUpdate(String sql) 执行动态的sql语句

Statement 执行静态sql 语句

方法 execute(String sql)执行静态 查找 select 语句,可能返回多个结果集

executeQuery(String sql) 返回单个 ResultSet 对象

1 /**

2 * 数据库的连接3 * 实现数据库的增删改查4 */

5 importjava.sql.Connection;6 importjava.sql.DriverManager;7 importjava.sql.PreparedStatement;8 importjava.sql.ResultSet;9 importjava.sql.SQLException;10

11 importcom.Bean.Student;12

13 public classDAO {14

15 private staticConnection getConn() {16 Connection conn =null;17

18 try{19 //加载 JDBC 桥的驱动程序

20 Class.forName("com.mysql.cj.jdbc.Driver");21 } catch(ClassNotFoundException e) {22 //TODO Auto-generated catch block

23 e.printStackTrace();24 } //加载对应驱动25

26 //通过数据库的 url 访问数据库

27 String url="jdbc:mysql://localhost:3306/user?serverTimezone=UTC&characterEncoding=UTF-8&useSSL=false";28 //mysql 数据库的用户名

29 String username = "root";30 //mysql 数据库密码

31 String password = "101032";32

33 try{34 //使用sql 包中的 Connection 接口,通过DriverManger 类的静态方法getConnection()创建连接对象

35 conn=DriverManager.getConnection(url,username,password);36 } catch(SQLException e) {37 //TODO Auto-generated catch block

38 e.printStackTrace();39 }40

41 returnconn;42 }43

44 //数据库查找操作

45 public static intinsert(Student student) {46 //Connection 接口代表与特定的数据库连接 并在连接上下文中执行sql 语句

47 Connection conn =getConn();48 int i=0;49 //sql 语句的查找 Name,Sex,Age 插入的数据属性

50 String sql="insert into students(Name,Sex,Age) values(?,?,?)";51 PreparedStatement pstmt;52

53 try{54 //执行 动态的sql 语句

55 pstmt =conn.prepareStatement(sql);56 //将获取到的 Name,Sex,Age 的数据插入到指定的位置

57 pstmt.setString(1, student.getName());58 pstmt.setString(2, student.getSex());59 pstmt.setString(3, student.getAge());60 i=pstmt.executeUpdate();61 pstmt.close();62 conn.close();63 } catch(SQLException e) {64 //TODO Auto-generated catch block

65 e.printStackTrace();66 }67

68 returni;69 }70

71 //数据库的修改

72 public static intupdata(Student student) {73 //Connection 接口代表与特定的数据库连接 并在连接上下文中执行sql 语句

74 Connection conn=getConn();75 int i=0;76 //sql语句实现数据库修改 按名字修改年龄

77 String sql = "update students set Age=‘" + student.getAge() + "‘ where Name=‘" + student.getName() + "‘";78 //PreparedStatement 执行动态的sql语句 如增删改

79 PreparedStatement pstmt;80 try{81 pstmt =conn.prepareStatement(sql);82 //执行动态的sql语句 包含insert update delete

83 i =pstmt.executeUpdate();84 if(i>0) {85 System.out.println("修改成功!");86 }else{87 System.out.println("未找到需要修改的数据!");88 }89 System.out.println("restult:"+i);90 //关闭

91 pstmt.close();92 //关闭数据库连接

93 conn.close();94 } catch(SQLException e) {95 //TODO Auto-generated catch block

96 e.printStackTrace();97 }98 returni;99 }100 //ResultSet 接口 暂存数据库的查询结果101

102 //数据库的查找

103 public staticInteger getAll() {104 //Connection 接口代表与特定的数据库连接 并在连接上下文中执行sql 语句

105 Connection conn=getConn();106 String sql="select * from students";107 //PreparedStatement类型执行动态的sql语句 Statement 执行静态语句

108 PreparedStatement pstmt;109

110 try{111 //执行sql语句

112 pstmt =conn.prepareStatement(sql);113 //执行给定的sql语句返回单个 ResultSet 对象

114 ResultSet rs =pstmt.executeQuery();115 //getMetaData() 检索此 ResultSet对象列的数量,类型和属性。 getColumnCount() 返回ResultSet对象列的数量

116 int col =rs.getMetaData().getColumnCount();117 System.out.println("============================");118 while(rs.next()) {119 for(int i=1;i<=col;i++) {120 //输出获取到的数据库数据

121 System.out.print(rs.getString(i)+"\t");122 if((i==4)&&(rs.getString(i).length()<8)){123 System.out.println();124 }125 }126 //分行

127 System.out.println();128 }129 System.out.println("======================");130 } catch(SQLException e) {131 //TODO Auto-generated catch block

132 e.printStackTrace();133 }134 return null;135

136 }137

138 //数据库的删除

139 public static intdelete(String name) {140 //Connection 接口代表与特定的数据库连接 并在连接上下文中执行sql 语句

141 Connection conn =getConn();142 int i=0;143 //修改类型的sql 语句实现

144 String sql="delete from students where Name =‘"+ name+ "‘";145 PreparedStatement pstmt;146

147 try{148 //执行动态sql语句

149 pstmt =conn.prepareStatement(sql);150 //executeUpdate() 指示受影响的行数

151 i =pstmt.executeUpdate();152 if(i>0) {153 System.out.println("删除成功!");154 }else{155 System.out.println("未找到需要删除数据!");156 }157 System.out.println("result:"+i);158 pstmt.close();159 conn.close();160 } catch(SQLException e) {161 //TODO Auto-generated catch block

162 e.printStackTrace();163 }164

165 returni;166 }167

168 }

Sevrelt层 实现数据库的操作,给出界面

在控制台输入数据时:出现输入乱码的问题,原因:输入数据是为汉语输入法,产生乱码,所以在输入数据的时候要注意切换成英文输入法。

1 packagecom.JDBC;2

3 importjava.util.Scanner;4

5 importcom.Bean.Student;6 importcom.Dao.DAO;7

8 public classJDBC {9 @SuppressWarnings("resource")10 public static voidmain(String[] args) {11 String name=null;12 String sex=null;13 String age=null;14 Scanner sc=null;15 do{16 //界面

17 System.out.println(" ~~~~~~~~~~~~~~欢迎使用数据库~~~~~~~~~~~~~~ ");18 System.out.println("请选择你需要执行的操作的编号:");19 System.out.println("1.添加数据 2.删除数据 3.修改数据 4.查询数据");20 System.out.println("~~~~~~~~~~~~~~请输入您的操作~~~~~~~~~~~~~~");21 sc=newScanner(System.in);22 int c=sc.nextInt();23 switch(c) {24 case 1:25 //添加数据

26 System.out.println("添加数据:");27 System.out.println("请输入学生 姓名,性别,年龄:");28 sc=newScanner(System.in);29 name=sc.next();30 sex=sc.next();31 age=sc.next();32 DAO.insert(newStudent(name,sex,age));33 DAO.getAll();34 break;35 case 2:36 //删除数据

37 System.out.println("删除数据:");38 System.out.println("请输入学生 姓名:");39 sc=newScanner(System.in);40 name=sc.next();41 DAO.delete(name);42 DAO.getAll();43 break;44 case 3:45 //修改数据

46 System.out.println("修改数据:");47 System.out.println("请输入需要修改的同学的姓名 和 需要修改的年龄:");48 sc=newScanner(System.in);49 name=sc.next();50 age=sc.next();51 DAO.getAll();52 DAO.updata(new Student(name,"",age));53 break;54 case 4:55 //查询数据

56 System.out.println("查询数据:");57 DAO.getAll();58 break;59 default:60 System.out.println("错误!");61 }62 }while(true);63 }64

65 }

使用Navicat Premium 的可视化数据库展示如下:

cd5e012b16d01e04796f83c4c4ea2341.gif

原文:https://www.cnblogs.com/cxy0210/p/11831599.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值