JAVA链接数据库(Mysql)小结
学习JAVA必不可少的就是学习数据库,数据库是重中之重,刚刚学完数据库,在这分享一下个人的总结。
1.加载驱动
数据库驱动有很多中,但大部分分为两种:
(1)mysql5.7左右的版本的驱动
(2)mysql8.0左右的版本的驱动
这个驱动可以根据自己的mysql版本去网上下载一个。
- 驱动的添加:
在项目中新建文件夹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;
}
}
以上就是本人在学习数据库时候的一些小结,如果哪地方有问题,大神可以进行评论,我会及时进行更改,感谢观看。