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