Java语言编程:使用Java语言通过JDBC连接数据库,并建表进行表数据的增删查改

“做中学”实验一

说在前面:在进行这个实验之前我们只学习了C++一门编程语言,对于java和数据库真就“做中学”,所以整个博文也仅仅只是在分享我自己的学习过程,如果代码有不规范或者不正确的地方还希望大家能给予指正,感谢!

以下这段话为2020.12.2更新

验收实验一的时候老师指出我这样的封装是不对的,正确的应该是把对数据库的连接和基本操作都封装在一个类中,然后分别对users表和persons表建一个类,在这个类中调用对数据库的操作。在实验二中会改正过来。

实验要求

在安装配置好Mysql数据库后,使用Java语言通过JDBC直接连接数据库,在数据库中建表并进行表数据的增删查改。

关键代码:
……
Class.forName(……); //加载数据库驱动名
String url=……; //数据连接的url
String name=……; //数据库访问的用户名
String password=……; //数据库访问的密码
Connection con= DriverManager.getConnection(url, name, password);
……

在安装配置好数据库Mysql后,需要使用Java编程完成如下任务:

(1)创建数据库表users,字段分别为username(主键,varchar(10))、pass(varchar(8));数据库表person,字段按分别为username(varchar(10),对应于users表的username)、name(主键,varchar(20))、age(int,可以为空)、teleno(char(11),可以为空);如表users中username则表person中也不能有相应的username的数据。

(2)在表users中插入4行数据,数据分别是(ly,123456)、(liming,345678)、(test, 11111)、(test1,12345),在表person中插入3行数据,数据分别为(ly,雷力)、(liming,李明,25)、(test,测试用户,20,13388449933);

(3)在person表中插入5行数据,分别为(ly,王五)、(test2,测试用户2)、(test1,测试用户1,33)、(test,张三,23,18877009966)、(admin,admin)。对于表中已有的username,则根据最新的数据修改其相应字段值;如该username不存在,则首先在表users中插入该username,默认的password为888888,然后才能将数据插入至person表。

(4)删除users表中test打头的username,同时按照规则一并删除person表相应的数据。
要求每个处理阶段均要在控制台打印出处理完成后的结果,格式按照制表方式输出,如:
表users
字段名xx 字段名xx ….
xx xx
表person
字段名xx 字段名xx ….
xx xx

(5)类的设计要求:需要将数据库的连接、操作进行封装,以便在后续实验中进行重用。此项为扣分项,没有进行封装的实验分会相应扣减。
自此实验结束,按照要求提交源代码进行验收。

自己的操作和学习流程

1、配置编程环境,包括安装、配置好Java编程环境、数据库环境;
2、学习操作数据库的基本指令:可参考数据库的基本操作
3、学习进行jdbc连接:可参考JDBC连接mysql数据库
4、学习java的基本语法:可以找几篇注释详细的博客阅读一下;
5、如果还是比较懵的话就参照着前辈的代码写一下,写着写着语法逻辑就清晰了,知道语法逻辑之后就能用自己的编程逻辑去编写代码了。

实验步骤

安装数据库可视化工具

为了方便观察和操作数据库,我安装了数据库的可视化工具Navicat。
新建了一个库叫Lab1。
在这里插入图片描述

JDBC连接mysql数据库

※记得导包 mysql-connector-java-8.0.12.jar

package Net;
import java.sql.Connection;
import java.sql.DriverManager;

public class JdbcCon {
   
	private String dbUrl="jdbc:mysql://localhost:3306/Lab1?useSSL=false&useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai";
	private String dbUserName="root";//数据库用户名
	private String dbPassWord="×××××××××××××";//数据库密码
	private String jdbcName="com.mysql.cj.jdbc.Driver";//驱动名称
	
	public Connection getCon()throws Exception{
   
		Class.forName(jdbcName);//加载驱动
		Connection con=DriverManager.getConnection(dbUrl, dbUserName, dbPassWord);//建立连接
		return con;
	}
	
	public void CloseCon(Connection con)throws Exception{
    //关闭数据库连接
		if(con!=null) {
    
			con.close();
			System.out.println("已断开与数据库的连接!");
		}
	}
	
	public void connect() {
   
		JdbcCon jdncConn=new JdbcCon();
		try {
   
			jdncConn.getCon();
			System.out.println("数据库连接成功!");
		} catch (Exception e) {
     //捕获异常
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("数据库连接失败!");
		}
	}
}

创建user、person类

package com.java123.entity;

public class Users {
   
	private String username;
	private String pass;
	
	public void SetUsername(String username) {
   
		this.username=username;
	}
	
	public void SetPass(String pass) {
   
		this.pass=pass;
	}
	
	public String getUsername() {
   
		return username;
	}
	
	public String getPass() {
   
		return pass;
	}
	
	public String getUser() {
       //方便插入数据时使用
		String temp="'"+this.username+"','"+this.pass+"'";
		return temp;
	}
}
package com.java123.entity;

public class Persons {
   
	private String username;
	private String name;
	private int age;
	private String teleno;
	
	public void initialize() {
   
		this.username=null;
		this.name=null;
		this.age=-1;
		this.teleno=null;
	}
	
	public void SetUsername(String username) {
   
		this.username=username;
	}
	
	public void SetName(String name) {
   
		this.name=name;
	}
	
	public void SetAge(int age) {
   
		this.age=age;
	}
	
	public void SetTeleno(String teleno) {
   
		this.teleno=teleno;
	}
	
	public String getUsername() {
   
		return username;
	}
	
	public String getName() {
   
		return name;
	}
	
	public int getAge() {
   
		return age;
	}
	
	public String getTeleno() {
   
		return teleno;
	}
	
	public String getPerson() {
   
		String temp="'"+this.username+<
  • 15
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值