JAVA链接数据库(Mysql)小结

JAVA链接数据库(Mysql)小结

学习JAVA必不可少的就是学习数据库,数据库是重中之重,刚刚学完数据库,在这分享一下个人的总结。

1.加载驱动

数据库驱动有很多中,但大部分分为两种:
(1)mysql5.7左右的版本的驱动
(2)mysql8.0左右的版本的驱动
这个驱动可以根据自己的mysql版本去网上下载一个。

  • 驱动的添加:
    放在项目的lib中
    在项目中新建文件夹libs,将数据库驱动放入。但这还没结束,接下来将驱动导入进工程。

在这里插入图片描述
选中驱动单击鼠标右键,选中Build Path下的Add to Build Path,你会发现,你多了以下这个包,则说明你的驱动成功添加到工程中,在项目中你才能去使用。
在这里插入图片描述

  • 加载驱动代码:
	try {
            //加载驱动
            //8.0版本以上的用:com.mysql.cj.jdbc.Driver
            //下面是8.0版本以下的:
            Class.forName("com.mysql.jdbc.Driver");
        } catch (Exception e) {
            e.printStackTrace();
        }

2.创建数据库链接

在项目中创建数据库的链接,用于连接数据库。由于我是定义的全局变量,所以在变量的定义上面使用了静态,方便下面的方法进行调用。

//8.0以上版本:static String url = "jdbc:mysql://localhost:3306/RUNOOB?useSSL=false&serverTimezone=UTC"
//8.0以下版本:
private static String url = "jdbc:mysql://localhost:3307/index?useSSL=true";
//用户名
private static String user = "root";
//密码
private static  String password = "123456";
//创建链接对象
static  Connection connection;
connection  =  DriverManager.getConnection(url, user, password);

3.创建执行器

在连接数据库之后就要进行数据库的使用。

//构建执行器
/*
statement:执行静态sql语句
preparedStatement :执行动态sql语句,在创建的时候要上传sql语句
*/
Statement statement = connection.createStatement();	
PreparedStatement preparedStatement = connection.prepareStatement(sql);

4.执行sql语句

构建查询器之后对sql语句进行查询
sattement执行sql语句:

//创建返回的结果集
String sql = "select * from user where username = '"+name+"'";
ResultSet  resultSet = statement.executeQuery(sql);
while(resultSet.next())
{
	//循环结果集
}

preparedStatement 执行sql语句:

String sql = "select * from user where username = ?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//将name赋给第一个问号
preparedStatement .setString(1,name);
int n = preparedStatement .executeUpdate();
if(n>0)
{
	//成功
}

5.关闭数据库

用完数据库后要对数据库进行关闭,关闭顺序应该逆序进行关闭

		//关闭数据库(逆序)
		if (resultSet!=null) {
			resultSet.close();
		}
		if (statement!=null) {
			statement.close();
		}
		if (connection!=null) {
			connection.close();
		}

6.MVC模式进行数据库的使用

在当今时代,数据库的使用不仅仅的局限于一个类中,往往需要多个类进行联合行动。这就形成了MVC模式下的数据库的使用。封装成mysql工具类,在使用数据库的时候可以直接调用工具类去增删改查。封装类代码如下所示:

package com.quanyuan.cyk.mysql;

import com.mysql.fabric.xmlrpc.base.Param;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Mysql {
    //因为我把端口改成3307了
    private static String url = "jdbc:mysql://localhost:3307/index?useSSL=true";
    //用户名
    private static String user = "root";
    //密码
    private static  String password = "123456";
    static  Connection connection;
    //查询器
    static Statement statement;
    //结果集
    static ResultSet resultSet;
    static PreparedStatement preparedStatement;
	/*
	静态代码块,创建类对象的时候执行。
	*/
    static {
        try {
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //创建数据库的链接
            connection  =  DriverManager.getConnection(url, user, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
    };

    /*
    * 查询
    * */
    public ArrayList<Map<String,Object>> query(String sql) throws SQLException {
        ArrayList<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        //3.构建查询器
        statement = connection.createStatement();
        resultSet = statement.executeQuery(sql);
        //获取表的结构
        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
        while (resultSet.next()) {
            //获取列数
            int cl = resultSetMetaData.getColumnCount();
            //定义MAP对象
            Map<String, Object> tempMap = new HashMap<String, Object>();
            //列的索引从1开始
            for (int i = 1; i <= cl; i++) {
                //返回指定索引的列名
                String k = resultSetMetaData.getColumnName(i).toString();
                //根据当前列的索引获取数据
                Object vObject = resultSet.getObject(i);
                tempMap.put(k, vObject);
            }
            list.add(tempMap);
        }
        return  list;
    }
    /*
    * 增删改
    * */
    public int charu(String sql) throws SQLException {
        int n = 0;
        preparedStatement = connection.prepareStatement(sql);
        n = preparedStatement.executeUpdate();
        return n;
    }

    /*
    * 关闭数据库
    * */
    public void close() throws SQLException {
        //关闭数据库
        if (preparedStatement!=null)
        {
            preparedStatement.close();
        }
        if (resultSet!=null) {
            resultSet.close();
        }
        if (statement!=null) {
            statement.close();
        }
        if (connection!=null) {
            connection.close();
        }
    }
}

该类封装了mysql,可以直接进行创建对象并使用,使用该类如下代码所示:

package com.quanyuan.cyk.zhong;

import java.util.ArrayList;
import java.util.Map;

import javax.swing.JLabel;

import com.quanyuan.cyk.bean.LoginInfo;
import com.quanyuan.cyk.bean.Xinxi;
import com.quanyuan.cyk.mysql.Mysql3;

public class LoginInfoDP {
	//数据库对象
	Mysql3 mysql3 = new Mysql3();
	//登录表的javabean的对象
	LoginInfo tempInfo = new LoginInfo();
	//登录信息表的javabean的对象
	Xinxi xinxi = new Xinxi();
	

	public ArrayList<LoginInfo> chaxunD(String name,String pw) {
		/*ArrayList<LoginInfo> list ;
		int k = list.size();
		return list;
		*k崩溃	空指针错误
		*/
		//登录信息表的list
		ArrayList<LoginInfo> list = new ArrayList<LoginInfo>();
		String sql = "select * from user where 1=1";
		if (!name.equals("")) {
			//注意空格
			sql = sql+"   and username = '"+name+"'   ";
		}
		if (!pw.equals("")) {
			sql =sql +"   and password = '"+pw+"'   ";
		}
		//查询
		ArrayList<Map<String, Object>> listDB = mysql3.query(sql);
		for (int i = 0; i < listDB.size(); i++) {
		//将数据库中的数据取出,放入javabean中
			String nameDb = listDB.get(i).get("user1").toString();
			String pwDb = listDB.get(i).get("password").toString();
			tempInfo.setName(nameDb);
			tempInfo.setPw(pwDb);
			list.add(tempInfo);
		}
		mysql3.close();
		return list;
	}
	
	
	public int charuZ(String name,String password) {		
		String sql = "insert into user(username,password) values('"+name+"','"+password+"')";
		//插入
		int k =mysql3.charu(sql);
		mysql3.close();
		return k;
	}
	

}


以上就是本人在学习数据库时候的一些小结,如果哪地方有问题,大神可以进行评论,我会及时进行更改,感谢观看。

发布了6 篇原创文章 · 获赞 1 · 访问量 418

猜你喜欢

转载自blog.csdn.net/qq_42590394/article/details/103688186