JDBC连接MySQL的增删改查

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LOVE_HopeOne/article/details/84567776

介绍:JDBC(Java DataBase Connectivity, Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用 Java语言编写的类和接口组成。

JDBC操作数据库类型:  MySQL数据库 

准备步骤:

① 你需要有MySQL数据库,然后在MySQL里面创建一个 home 数据库,在数据库里面新建一个 person 表。

② 在 person表中,新建字段  id(int 自增) ,name(character 类型),age(int 类型),chenghu(character 类型)

③ 在 Java / web 项目中导入 JDBC驱动jar包。最新: mysql-connector-java-8.0.11.jar  在网站上可以自行下载。

④ 导入方法:右击项目-> build path -> Add External Archives...  之后找到  mysql-connector-java-8.0.11.jar 文件 点击打开即可。

jdbc连接数据库步骤:

提示:JDBC 驱动jar包  在8.0版本以上的,和引入低版本的驱动jar包 在 创建驱动 建立URL、连接数据库 操作要写的java程序不一样。

1. 建立URL

//加载驱动
String URL="jdbc:mysql://127.0.0.1:3306/home?useSSL=false&serverTimezone=GMT%2B8";  

   代码格式:     jdbc:数据库类型://所连数据库IP地址:默认端口号/数据库名?参数&参数

2. 加载驱动

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

  驱动的格式,跟低版本的 jar包要写的java格式不一样。

3. 连接数据库

Connection ct = DriverManager.getConnection(URL, USER, PASSWORD);

4. jdbc连接数据库的java封装

package jdbc;

import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import java.sql.Connection;
public class ConnDb {

	private Connection conn = null;
	private static Logger log=Logger.getLogger(ConnDb.class);	
    private Connection ct = null;
	
	public Connection getConn(){
		try {
		
	//创建URL
	String URL="jdbc:mysql://127.0.0.1:3306/home?useSSL=false&serverTimezone=GMT%2B8";  
  					 
		String USER="root";
		String PASSWORD="123456";
		//1.加载mysql驱动:		  		     
		Class.forName("com.mysql.cj.jdbc.Driver");		   	   
			
        //得到连接
	    ct = DriverManager.getConnection(URL, USER, PASSWORD);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return ct;
	}

	public Boolean dbclose() {
		// TODO Auto-generated method stub
		Boolean closeResult = false;
		try {
			if(!conn.isClosed()){
				conn.close();
			}
			log.debug("数据库连接关闭成功");
			closeResult=true;
		} catch (SQLException e) {
			// TODO: handle exception
			log.error("数据库连接关闭失败");
			log.error(e.getSQLState());//没有合适的驱动
			log.error("错误信息为:"+e.getMessage());
			closeResult=false;
		}
		return closeResult;
	}


}

4. JDBC增删改查的jJava封装

package dao;

import java.sql.Connection;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import jdbc.ConnDb;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class personDao {

	private ConnDb dbs;
	private Connection conn;
	private PreparedStatement pst = null;

	public applicationtypeDao() {
		super();
		dbs = new ConnDb();
		conn = dbs.getConn();
	}

	public JSONArray select() { // select 选取数据

		JSONArray jsonArray = new JSONArray();
		String sql = "select * from person;     
		ResultSet resultSet = null;

		int col = 0;
		try {
			pst = conn.prepareStatement(sql);
			resultSet = pst.executeQuery();
			col = resultSet.getMetaData().getColumnCount();
			while (resultSet.next()) {

				JSONObject jsonObject = new JSONObject();
				for (int i = 0; i < col; i++) {
                    // 得到列名
					String columnLable = resultSet.getMetaData().getColumnLabel(i + 1); 
                   // 得到列值
					Object columnValue = resultSet.getObject(columnLable);  					
                    jsonObject.put(columnLable, columnValue);

				}

				jsonArray.add(jsonObject);

			}

			resultSet.close();
			closedb(null);
		} catch (SQLException e) {

			// log.error("----记录更新失败----");
			closedb(null);
		}

		return jsonArray;

	}

	
	public int update(int id, String name, int age,String shenfen) { 

		int rowsCount = 0; // 记录被更新的记录总数
        String sql = "update person set name='" + name + "',age='" + age+ 
       "',shenfen'"+shenfen+ "' where id ='" + id + "'";

		try {
			pst = conn.prepareStatement(sql);
			rowsCount = pst.executeUpdate();
			closedb(null);
		} catch (SQLException e) {
		
			closedb(e);

		}
		return rowsCount;

	}

	public boolean insert(int id, String name, int age, String shenfen) {

		boolean rowsCount = false; 

		String sql = "insert into person(id,name,image,shenfen) values ('"+ id + "','" 
        + name + "','" + age+"','" + shenfen +"')";
 
		
		try {
			pst = conn.prepareStatement(sql);
			rowsCount = pst.execute();
			closedb(null);
			System.out.println("插入成功");
		} catch (SQLException e) {
			System.out.println("---插入记录失败!---");
			closedb(e);

		}
		return rowsCount;

	}

	
	public int delete(int id) {
		int rowsCount = 0;
		String sql = "delete from  person where id='" + id + "'";
		PreparedStatement pst = null;
		try {
			pst = conn.prepareStatement(sql);
			rowsCount = pst.executeUpdate();
			System.out.println("删除记录成功:" + rowsCount);
			pst.close();
			conn.close();
		} catch (SQLException e) {

			System.out.println("删除记录失败");

			try {
				if (!pst.isClosed()) {
					pst.close();
				}
				if (!conn.isClosed()) {
					conn.close();
				}
			} catch (SQLException e2) {

				e2.printStackTrace();
			}
		}
		return rowsCount;
	}

	private void closedb(SQLException e) {
		try {
			if (!pst.isClosed()) {
				pst.close();
			}
			if (!conn.isClosed()) {
				conn.close();
			}
		} catch (SQLException e2) {

		}
	}

}

5. 调用jdbc 增删改查 的方法实例实例

package main;


public class test {

public static void main(String args[]){

  // 增
  new personDao.insert("李晓明",18,"儿子");
  new personDao.insert("李二小",38,"父亲");
  new personDao.insert("王小红",18,"母亲");
  new personDao.insert("李大白",18,"祖父");
  // 删
  new personDao.delete(1);
  // 改
  new personDao.update(1,"李小明改",20,"学生");
  // 查
  new personDao.select();

}

}

     上面的代码实例,主要实现了对 jdbc 增删改查方法的类封装,方便调用方法。且每次调用“增删改查”功能后,内部自动执行关闭jdbc驱动的方法,消除了数据缓存的累积现象。

猜你喜欢

转载自blog.csdn.net/LOVE_HopeOne/article/details/84567776