Java连接数据库过程完整描述

java连接数据方法:

首先,本人使用的是MySQL5.7.27,平台使用eclipse,JDK1.8

1.创建数据访问对象Dao

首先,必要知道是什么是Dao

DAO(Data Access Object)数据访问对象:

简单来说,就是一种应用程序编程接口(API),它允许程序员请求对微软的Access数据库的访问。在这个对象里,包含了所要连接的数据库的软件种类,此数据库的连接的是哪个库,数据库的用户名和密码,执行方法,还有擦做完成之后的资源释放,从而在平台软件和数据库之间建立了连接。
在编写过程中需要注意的是,需要使用try{ } catch{ }语句包裹起来。
代码如下:

package com.lmonkey.dao;

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

import com.mysql.jdbc.Statement;

public class Basedao {
	static{
		//(1)加载数据库驱动
		 try {
			 	Class.forName("com.mysql.jdbc.Driver");
		} catch (Exception e) {
				e.printStackTrace();
		}
	}
	
	//(2) 架桥 (搭建 java和数据库之间的桥梁)
	public static Connection getconn(){
		//创建一个连接对象
		Connection conn = null;
		String url = "jdbc:mysql://localhost:3306/lmonkeyshop";//输入数据库的端口号
		String user = "root";
		String password = "";
		try {
			conn = DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return 	conn;
	} 
	//封装通用的SQL方法,IUD指insert update delete
	//由于查询是有可直接调用的方法,这里不做封装
	        				//sql语句     	参数
	public static int exectuIUD(String sql , Object[] params){
		int count = 0;//记录SQL语句返回的受影响行数
		Connection conn = Basedao.getconn();
		//准备SQL
		PreparedStatement ps = null;
		try {
			//准备SQL
			ps = conn.prepareStatement(sql);
			//绑定参数
			for(int i=0;i<params.length;i++){
				ps.setObject(i+1, params[i]);
			}
			count = ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			Basedao.closeall(null, ps, conn);//不管抛出什么异常,最后都执行关闭
		}
		return count;//返回行数
	}
	//关闭数据库的方法
	public static void closeall(ResultSet rs , PreparedStatement ps, Connection conn){
		try {
				if(rs!=null)	rs.close();
				if(ps!=null)	ps.close();
				if(conn!=null) 	conn.close();	
		} catch (SQLException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
	}
}

2.创建实体类entity

用户是实体类是什么呢?实际上就是对应的数据中的表,在对数据库中的数据进行提取和查询的时候,我们需要一个类对象来保存从数据中查到的各种的数据。将其保存成位java形式的对象,然后进行操作之后,再通过对应关系,将对象中的数据返回给数据库中进行保存。
因此,对于我们要操作的每一张表,我们都需要创建一个用户实体类,并且数据类型也是需要对应的。

那么如何对应的呢?看图呗
在这里插入图片描述
除了上边的对应之外,在实体类种还需要写对应的构造方法和每一个属性所需要的Geter和Seter方法。

下面是一个例子:
数据库表:
在这里插入图片描述
那么我们对应的实体类就应该为:

package com.lmonkey.entity;

public class LMONKEY_USER {
	
	
	private String USER_ID;
	private String USER_NAME;
	private String USER_PASSWORD;
	private String USER_SEX;
	private String USER_BIRTHDAY;
	private String USER_IDENITY_CODE;
	private String USER_EMAIL;
	private String USER_MOBILE;
	private String USER_ADDRESS;
	private int USER_STATUS;
	public LMONKEY_USER(String uSER_ID, String uSER_NAME, String uSER_PASSWORD, String uSER_SEX, String uSER_BIRTHDAY,
			String uSER_IDENITY_CODE, String uSER_EMAIL, String uSER_MOBILE, String uSER_ADDRESS, int uSER_STATUS) {
		super();
		USER_ID = uSER_ID;
		USER_NAME = uSER_NAME;
		USER_PASSWORD = uSER_PASSWORD;
		USER_SEX = uSER_SEX;
		USER_BIRTHDAY = uSER_BIRTHDAY;
		USER_IDENITY_CODE = uSER_IDENITY_CODE;
		USER_EMAIL = uSER_EMAIL;
		USER_MOBILE = uSER_MOBILE;
		USER_ADDRESS = uSER_ADDRESS;
		USER_STATUS = uSER_STATUS;
	}
	public String getUSER_ID() {
		return USER_ID;
	}
	public void setUSER_ID(String uSER_ID) {
		USER_ID = uSER_ID;
	}
	public String getUSER_NAME() {
		return USER_NAME;
	}
	public void setUSER_NAME(String uSER_NAME) {
		USER_NAME = uSER_NAME;
	}
	public String getUSER_PASSWORD() {
		return USER_PASSWORD;
	}
	public void setUSER_PASSWORD(String uSER_PASSWORD) {
		USER_PASSWORD = uSER_PASSWORD;
	}
	public String getUSER_SEX() {
		return USER_SEX;
	}
	public void setUSER_SEX(String uSER_SEX) {
		USER_SEX = uSER_SEX;
	}
	public String getUSER_BIRTHDAY() {
		return USER_BIRTHDAY;
	}
	public void setUSER_BIRTHDAY(String uSER_BIRTHDAY) {
		USER_BIRTHDAY = uSER_BIRTHDAY;
	}
	public String getUSER_IDENITY_CODE() {
		return USER_IDENITY_CODE;
	}
	public void setUSER_IDENITY_CODE(String uSER_IDENITY_CODE) {
		USER_IDENITY_CODE = uSER_IDENITY_CODE;
	}
	public String getUSER_EMAIL() {
		return USER_EMAIL;
	}
	public void setUSER_EMAIL(String uSER_EMAIL) {
		USER_EMAIL = uSER_EMAIL;
	}
	public String getUSER_MOBILE() {
		return USER_MOBILE;
	}
	public void setUSER_MOBILE(String uSER_MOBILE) {
		USER_MOBILE = uSER_MOBILE;
	}
	public String getUSER_ADDRESS() {
		return USER_ADDRESS;
	}
	public void setUSER_ADDRESS(String uSER_ADDRESS) {
		USER_ADDRESS = uSER_ADDRESS;
	}
	public int getUSER_STATUS() {
		return USER_STATUS;
	}
	public void setUSER_STATUS(int uSER_STATUS) {
		USER_STATUS = uSER_STATUS;
	}
	
}

做完这些之后呢,当然就需要编写我们的方法啦。

3.创建服务层service

顾名思义,service就是用来服务的用户满足各种对数据库操作的,通过在这个类中编写对应的SQL语句,我们就能实现将数据经过修改之后传入数据库中,完成我们所需要的服务。
下面举例一个插入方法:

package com.lmonkey.service;

//用户服务层,执行对数据库的各种操作

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.lmonkey.dao.Basedao;
import com.lmonkey.entity.*;

public class LMONKEY_USERDao {
	/**
	 * 加入数据库
	 * @param u
	 * @return 执行操作之后数据库受影响的行数
	 */
	
	public static int insert(LMONKEY_USER u) {
		String sql = "insert into LMONKEY_USER values(?,?,?,?,DATE_FORMAT(?,'%y-%m-%d'),?,?,?,?,?)";
		
		Object[] params = {u.getUSER_ID(),
				u.getUSER_NAME(),
				u.getUSER_PASSWORD(),
				u.getUSER_SEX(),
				u.getUSER_BIRTHDAY(),
				u.getUSER_IDENITY_CODE(),
				u.getUSER_EMAIL(),
				u.getUSER_MOBILE(),
				u.getUSER_ADDRESS(),
				u.getUSER_STATUS()
				};
				
		return Basedao.exectuIUD(sql, params);//这个方法是Dao中执行增删改的封装方法,此方法连接了数据库,并且返回受影响行数
	}
	/**
	 * 登陆通过用户名和密码,查询账号密码是否一致
	 * @param username
	 * @param pwd
	 * @return
	 */
	public static int selectByNM(String username, String pwd) {
		int count=0 ;
		Connection conn = Basedao.getconn();
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		try {
			String sql = "select count(*) from LMONKEY_USER where USER_ID=? and USER_PASSWORD=?";
			ps = conn.prepareStatement(sql);
			ps.setString(1, username);
			ps.setString(2,pwd);
			//执行查询的方法,是已经实现了的,所以直接调用即可executeQuery();
			rs=ps.executeQuery();
		
			while(rs.next()){
				count=rs.getInt(1);//不能改
			}
		} catch (Exception e) {
			
		}finally{
			Basedao.closeall(rs, ps, conn);
		}
		return count;

	}

}
	

那么到了这里之后,其实连接数据库和操作数据库就完成了,也就实现了数据库的连接。当然实际的内容还是需要自己去修改的

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值