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

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

 public class Student {

     //学生类需要的属性,都是私有的
private String Id;
private String Name;
private String Sex;
private String Age; //Get Set 方法的实现
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getSex() {
return Sex;
}
public void setSex(String sex) {
Sex = sex;
}
public String getAge() {
return Age;
}
public void setAge(String age) {
Age = age;
}
//构造方法
public Student(String id, String name, String sex, String age) {
super();
Id = id;
Name = name;
Sex = sex;
Age = age;
}
public Student(String string, String string2, String string3) {
// TODO Auto-generated constructor stub
this.Id=null;
this.Name=string;
this.Age=string3;
this.Sex=string2;
} }

其次是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 对象

 /**
* 数据库的连接
* 实现数据库的增删改查
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import com.Bean.Student; public class DAO { private static Connection getConn() {
Connection conn =null; try {
//加载 JDBC 桥的驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 加载对应驱动 //通过数据库的 url 访问数据库
String url="jdbc:mysql://localhost:3306/user?serverTimezone=UTC&characterEncoding=UTF-8&useSSL=false";
//mysql 数据库的用户名
String username = "root";
//mysql 数据库密码
String password = "101032"; try {
//使用sql 包中的 Connection 接口,通过DriverManger 类的静态方法getConnection()创建连接对象
conn=DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return conn;
} //数据库查找操作
public static int insert(Student student) {
// Connection 接口代表与特定的数据库连接 并在连接上下文中执行sql 语句
Connection conn = getConn();
int i=0;
// sql 语句的查找 Name,Sex,Age 插入的数据属性
String sql="insert into students(Name,Sex,Age) values(?,?,?)";
PreparedStatement pstmt; try {
//执行 动态的sql 语句
pstmt = conn.prepareStatement(sql);
//将获取到的 Name,Sex,Age 的数据插入到指定的位置
pstmt.setString(1, student.getName());
pstmt.setString(2, student.getSex());
pstmt.setString(3, student.getAge());
i=pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return i;
} //数据库的修改
public static int updata(Student student) {
// Connection 接口代表与特定的数据库连接 并在连接上下文中执行sql 语句
Connection conn= getConn();
int i=0;
// sql语句实现数据库修改 按名字修改年龄
String sql = "update students set Age='" + student.getAge() + "' where Name='" + student.getName() + "'";
// PreparedStatement 执行动态的sql语句 如增删改
PreparedStatement pstmt;
try {
pstmt = conn.prepareStatement(sql);
//执行动态的sql语句 包含insert update delete
i = pstmt.executeUpdate();
if(i>0) {
System.out.println("修改成功!");
}else {
System.out.println("未找到需要修改的数据!");
}
System.out.println("restult:"+i);
// 关闭
pstmt.close();
//关闭数据库连接
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return i;
}
//ResultSet 接口 暂存数据库的查询结果 //数据库的查找
public static Integer getAll() {
// Connection 接口代表与特定的数据库连接 并在连接上下文中执行sql 语句
Connection conn= getConn();
String sql="select * from students";
//PreparedStatement类型执行动态的sql语句 Statement 执行静态语句
PreparedStatement pstmt; try {
//执行sql语句
pstmt = conn.prepareStatement(sql);
// 执行给定的sql语句返回单个 ResultSet 对象
ResultSet rs = pstmt.executeQuery();
// getMetaData() 检索此 ResultSet对象列的数量,类型和属性。 getColumnCount() 返回ResultSet对象列的数量
int col =rs.getMetaData().getColumnCount();
System.out.println("============================");
while(rs.next()) {
for(int i=1;i<=col;i++) {
//输出获取到的数据库数据
System.out.print(rs.getString(i)+"\t");
if((i==4)&&(rs.getString(i).length()<8)){
System.out.println();
}
}
//分行
System.out.println();
}
System.out.println("======================");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null; } //数据库的删除
public static int delete(String name) {
// Connection 接口代表与特定的数据库连接 并在连接上下文中执行sql 语句
Connection conn =getConn();
int i=0;
//修改类型的sql 语句实现
String sql="delete from students where Name ='"+ name+ "'";
PreparedStatement pstmt; try {
// 执行动态sql语句
pstmt = conn.prepareStatement(sql);
// executeUpdate() 指示受影响的行数
i = pstmt.executeUpdate();
if(i>0) {
System.out.println("删除成功!");
}else {
System.out.println("未找到需要删除数据!");
}
System.out.println("result:"+i);
pstmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return i;
} }

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

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

 package com.JDBC;

 import java.util.Scanner;

 import com.Bean.Student;
import com.Dao.DAO; public class JDBC {
@SuppressWarnings("resource")
public static void main(String[] args) {
String name=null;
String sex=null;
String age=null;
Scanner sc=null;
do {
//界面
System.out.println(" ~~~~~~~~~~~~~~欢迎使用数据库~~~~~~~~~~~~~~ ");
System.out.println("请选择你需要执行的操作的编号:");
System.out.println("1.添加数据 2.删除数据 3.修改数据 4.查询数据");
System.out.println("~~~~~~~~~~~~~~请输入您的操作~~~~~~~~~~~~~~");
sc=new Scanner(System.in);
int c=sc.nextInt();
switch(c) {
case 1:
//添加数据
System.out.println("添加数据:");
System.out.println("请输入学生 姓名,性别,年龄:");
sc=new Scanner(System.in);
name=sc.next();
sex=sc.next();
age=sc.next();
DAO.insert(new Student(name,sex,age));
DAO.getAll();
break;
case 2:
//删除数据
System.out.println("删除数据:");
System.out.println("请输入学生 姓名:");
sc=new Scanner(System.in);
name=sc.next();
DAO.delete(name);
DAO.getAll();
break;
case 3:
//修改数据
System.out.println("修改数据:");
System.out.println("请输入需要修改的同学的姓名 和 需要修改的年龄:");
sc=new Scanner(System.in);
name=sc.next();
age=sc.next();
DAO.getAll();
DAO.updata(new Student(name,"",age));
break;
case 4:
//查询数据
System.out.println("查询数据:");
DAO.getAll();
break;
default:
System.out.println("错误!");
}
}while(true);
} }

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

Java 使用控制台操作实现数据库的增删改查的更多相关文章

  1. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  2. Java Web下MySQL数据库的增删改查(二)

    前文:https://www.cnblogs.com/Arisf/p/14095002.html 在之前图书管理系统上做了改进优化 图书管理系统v2 首先是项目结构: 1.数据库的连接: 1 pack ...

  3. Java Web下MySQL数据库的增删改查(一)

    以图书管理系统举例(jsp+servlet+bean) 1.数据库的连接 package db; import java.sql.Connection; import java.sql.DriverM ...

  4. Java连接本地MySQL数据库进行增删改查操作

    package Dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStat ...

  5. java中如何操作数据库(增删改查)

    EntityManager 是用来对实体Bean 进行操作的辅助类.他可以用来产生/删除持久化的实体Bean,通过主键查找实体bean,也可以通过EJB3 QL 语言查找满足条件的实体Bean.实体B ...

  6. Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查

    前言 java连接数据库完整流程为: 1,获得驱动(driver),数据库连接(url),用户名(username),密码(password)基本信息的三种方式. 2,通过获得的信息完成JDBC实现连 ...

  7. java操作数据库:增删改查

    不多bb了直接上. 工具:myeclipse 2016,mysql 5.7 目的:java操作数据库增删改查商品信息 test数据库的goods表 gid主键,自增 1.实体类Goods:封装数据库数 ...

  8. Java操作数据库实现"增删改查"

    本文主要讲解JDBC操作数据库    主要实现对MySql数据库的"增删改查" 综合概述: JDBC的常用类和接口 一   DriverManager类 DriverManage类 ...

  9. java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)

    1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UT ...

随机推荐

  1. JS取整方法

    1.toFixed方法 定义:toFixed() 方法可把 Number 四舍五入为指定小数位数的数字. 例如:将数据Num保留2位小数,则表示为:toFixed(Num):但是其四舍五入的规则与数学 ...

  2. LabVIEW面向对象的ActorFramework(1)

    本系列文章主要阐述以下几个问题: (1)什么是面向对象编程? (2)为什么要学习面向编程? (3)LabVIEW面向编程学习为什么有点难? (4)LabVIEW面向对象的编程架构:Actor Fram ...

  3. JavaScript 的一些SAO操作

    IE判断检测 jQuery 在 1.9 版本之前,提供了一个浏览器对象检测的属性 .browser 的替代方案.于是各种利用 IE bug 的检测方法被搜了出来: // IE 678 最短方法 var ...

  4. 修正png

    这是修正+取MD5的方法 function MD5FileTextPng(filename: AnsiString): AnsiString; var buf: ..MAX_PATH - ] of C ...

  5. 深度学习之常用linux命令总结

    深度学习中常用linux命令总结 1.创建文件夹 mkdir 文件名2.删除文件 rm -d 目录名 #删除一个空目录 rmdir 目录名 #删除一个空目录 rm -r 目录名 #删除一个非空目录 r ...

  6. esxi 主机用户功能说明

    1.  root 用户 默认情况下,每个 ESXi 主机都有一个具有管理员角色的 root 用户帐户.该 root 用户帐户可用于本地管理,并可用于将主机连接到 vCenter Server. 此公共 ...

  7. 文件上传报错java.io.FileNotFoundException拒绝访问

    局部代码如下: File tempFile = new File("G:/tempfileDir"+"/"+fileName); if(!tempFile.ex ...

  8. jsp采用ajax传递数组给后台controller并遍历

    ajax传递数组,期间出各种各样的问题,那叫一个头疼,网上各种查,都没有解决,最终摸索摸索加借鉴搞定,不多说,上代码 /* 复选框选定部分 */ $("#delete").clic ...

  9. C++面试常见问题——08const关键字

    const 类内定义 类型名 函数名(参数列表) const{ ​ //函数体: } 类外定义 类内申明 类型名 函数名(参数列表): 类外定义 类型名 类名::函数名(参数列表){ ​ //函数体: ...

  10. 17.swoole学习笔记--异步mysql操作

    <?php //异步mysql操作 $db=new swoole_mysql(); $config=[ 'host'=>'192.168.10.31', 'user'=>'zouke ...