jdbc_mysql数据库连接并进行增删改查

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ym15229994318ym/article/details/100853889

jdbc数据库连接并进行增删改查

1. 首先需要有一个数据库连接的jar包    mysql-connector-java-5.1.39-bin.jar

       复制到创建的项目下

         并点击Build Path -->Add To Build Path进行解压,就可进行使用

2. 创建一个连接工具类DBUtil.java。(单例模式)

       driver = "com.mysql.jdbc.Driver":数据库连接jar包中的Driver类路径
               url = "jdbc:mysql://localhost:3306/job_user_power":当前数据库路径,主机ip为localhost(本机),端口号默认3306,要连接的数据库名是:job_user_power.   (这个数据库中是我的一个小项目,本文只摘用项目中的一张表进行jdbc的描述)
               username = "root":数据库用户名
               password = "admin":数据库密码
               Connection con = null:  数据库连接对象
               Class.forName(driver):加载驱动类
               con = DriverManager.getConnection(url, username, password): 获取连接对象

//导包
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBUtil {
	private static String driver = "com.mysql.jdbc.Driver";
	private static String url = "jdbc:mysql://localhost:3306/job_user_power";
	private static String username = "root";
	private static String password = "admin";
	private static Connection con = null;// 返回数据库连接

    /*静态资源只加载一次*/
	static {
		// 加载驱动类
		try {
			Class.forName(driver);
			con = DriverManager.getConnection(url, username, password);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (con != null) {
				System.out.println("数据库连接成功!");
			}
		}
	}

    /*返回数据库连接对象*/
	public static Connection getCon() {
		return con;
	}
}

3. 准备数据库

-- 创建users表
CREATE TABLE users(
	uid INT PRIMARY KEY AUTO_INCREMENT,
	uname VARCHAR(30),
	uage INT,
    -- 一个外键关联与(此文无关,本人项目中的代码段)
	jid INT,
	CONSTRAINT fk_users_job FOREIGN KEY(jid) REFERENCES job(jid)
);


-- 插入数据
INSERT INTO users VALUES(NULL,'小山',21,1);
INSERT INTO users VALUES(NULL,'小猛',21,2);
INSERT INTO users VALUES(NULL,'小莉',20,3);
INSERT INTO users VALUES(NULL,'小青',20,4);
INSERT INTO users VALUES(NULL,'小明',21,4);
INSERT INTO users VALUES(NULL,'小杰',20,5);

4. 操作数据库,对数据进行简单的增删改查

//导包
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

//导入第二步创建的DBUtil.java包
import cn.bjwlxy.utill.DBUtil;

//创建操作users表的类
public class UserData {
	private Connection con = null;// 返回数据库连接对象
    
    //构造方法中获取连接
	public UserData() {
		DBUtil dbUtil = new DBUtil();
		con = dbUtil.getCon();
	}

	/**
	 * 增加数据
	 */
	public void insertData() {
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入该职员的姓名:");
		String uname = sc.nextLine();
		System.out.print("请输入该职员的年龄:");
		String uage = sc.nextLine();
		System.out.print("请输入该职员的岗位编号:");
		String jid = sc.nextLine();
		try {
			String sql = "insert into users values(null,?,?,?)";
			PreparedStatement pst = con.prepareStatement(sql);
			pst.setObject(1, uname);
			pst.setObject(2, uage);
			pst.setObject(3, jid);
			int executeUpdate = pst.executeUpdate();
			if (executeUpdate == 1) {
				System.out.println("添加职员成功!");
				pst.close();//释放资源
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 删除数据
	 */
	public void dropData() {
		try {
			System.out.print("请输入要删除的职员编号:");
			int uid = new Scanner(System.in).nextInt();
			String sql = "delete from users where uid=?";
			PreparedStatement pst = con.prepareStatement(sql);
			pst.setObject(1, uid);
			int executeUpdate = pst.executeUpdate();
			if (executeUpdate == 1) {
				System.out.println("删除职员成功!");
				pst.close();//释放资源
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	/**
	 * 改正数据
	 */
	public void updateData() {
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入你要更改的职员编号:");
		int uid = sc.nextInt();
		System.out.print("请输入你将把编号为" + uid + "的岗位编号改正为:");
		int jid = sc.nextInt();
		try {
			String sql = "update users set jid=? where uid=?";
			PreparedStatement pst = con.prepareStatement(sql);
			pst.setObject(1, jid);
			pst.setObject(2, uid);
			int executeUpdate = pst.executeUpdate();
			if (executeUpdate == 1) {
				System.out.println("更改职员成功!");
				pst.close();//释放资源
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	/**
	 * 查看数据
	 */
	public void showData() {
		try {
			// Statement st = con.createStatement();
			String sql = "select users.uid,users.uname,users.uage from users";
			PreparedStatement pst = con.prepareStatement(sql);
			ResultSet rs = pst.executeQuery();
			System.out.println("职员如下:");
			System.out.println("\t编号" + "\t姓名" + "\t年龄");
			String uid, uname, uage;
			while (rs.next()) {
				uid = rs.getString("uid");
				uname = rs.getString("uname");
				uage = rs.getString("uage");
				System.out.println("\t" + uid + "\t" + uname + "\t" + uage);
			}
            //释放资源
			pst.close();
			rs.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

5. 测试

扫描二维码关注公众号,回复: 7659063 查看本文章
public static void Test() {
    public static void main(String[] args){
        //创建一个操作users表的类对象
		UserData userData = new UserData();
		Scanner sc = new Scanner(System.in);
		while (true) {
			System.out.println("操作职员表:");
			System.out.println("\t1.添加职员" + "\r\n\t2.删除职员" + "\r\n\t3.修改数据"
					+ "\r\n\t4.查询职员"+"\r\n\t5.退出测试");
			System.out.print("输入选择:");
			int choose = sc.nextInt();
			switch (choose) {
			case 1:
				userData.insertData();
				break;
			case 2:
				userData.dropData();
				break;
			case 3:
				userData.updateData();
				break;
			case 4:
				userData.showData();
				break;
			case 5:
                // 关闭数据库连接对象,释放资源
				DBUtil.getCon().close();
				break;
			default:
				System.out.println("输入错误!");
				break;
			}
		}
	}
}

测试结果:

工具类:采用单例模式,使用类中静态成员,保证数据库只需连接一次,减少数据库资源浪费。

猜你喜欢

转载自blog.csdn.net/ym15229994318ym/article/details/100853889