以idea为例,实现jdbc连接mysql
一、需要下载开发包,地址:下载地址
此处我配置的版本是:mysql-connector-java-8.0.18
把下载好的压缩包解压,把解压的文件夹找一个不阻碍的地方放着,

(最好记住位置,等下要导入)。

我的电脑没有分很多个盘,只能放C,此处不建议大家放C。


二、打开idea
点击File,再点Project Structrue

然后就是导入jar包

点击Modules,点击添加(+),然后找到刚才放的位置,将jar包导入。

这样一来,我们就成功地导入了关于连接mysql的jar包(已经完成了一大步了)。

三、接下来便是重点了,使用java来实现连接

下面一些信息需要提前处理,此处我设为全局变量。

private String driver = "com.mysql.cj.jdbc.Driver";//驱动名称
private String url = "jdbc:mysql://localhost:3306/databasedemo?&useSSL=false&serverTimezone=UTC";//链接地址,其中databasedemo是自己创建数据库,需要修改
private String user = "root";//用户名
private String password = ""; // 密码,自己填
Connection connection = null;//连接
PreparedStatement ps = null;//处理
ResultSet res = null;//结果

加载: 将"com.mysql.jdbc.Driver"类的Class类对象加载到运行时内存中;

/*
加载数据库-load
 */
public void load() {
    try {
        Class.forName(driver);
        System.out.println("Successfully loaded");
    }
    catch(Exception e) {
        e.printStackTrace();
        System.out.println("failed to load");
    }
}

连接:定义获取Connection对象的方法。

/*
连接数据库-connect
 */
public void connect() {
    try {
        connection = DriverManager.getConnection(url, user, password);
        System.out.println("Connection successful");
    }
    catch(SQLException e) {
        e.printStackTrace();
        System.out.print("Connection fail");
    }
}

这样一来,我们就可以成功地连接数据库了。

接下来我们可以对数据库进行一些简单了操作了。

先说明我的数据库的一个关系表S(id, name, sex, age, dept)

我先在mysql的databasedemo这个数据库中创建了这个关系表

create table S
(
id varchar(11) not null,
name varchar(100) not null,
sex varchar(4) not null,
age integer not null,
dept varchar(100) not null,
primary key (id)
);

到这里了,讲一下怎么创建这个表吧!

打开命令提示符窗口,用管理员身份启动(一定要管理员,一定要管理员,一定要管理员)

 

输入

mysql -u root -p

 

然后输入密码: 

 然后切换到对应的数据库

use databasedemo

然后就可以创表了

 接下来用SQL语言建立关系表了

create table S
(
id varchar(11) not null,
name varchar(100) not null,
sex varchar(4) not null,
age integer not null,
dept varchar(100) not null,
primary key (id)
);

接下来查看一下这个表有没有信息

 我们可以发现这个表是一个空表,接下来我们可以到idea中用java语言进行操作了。

在此,我先预处理一些字符串,作为全局变量方便操作

private String select = "select * from S";//此处查询所有
private String insert = "insert into S(id, name, sex, age, dept) values( ?, ?, ?, ?, ?)";//插入
private String update = "update S set dept= ? where id = ?";//更新
private String delete = "delete from S where id = ?";//根据数据删除

先是我们的查询函数,将数据库中的内容返回到我们的java里面,并且打印出来

/*
查询信息(此处查询所有信息,可根据实践修改)-queryInfo
 */
public void queryInfo() {
    try {
        ps = connection.prepareStatement(select);
        res = ps.executeQuery();
        while (res.next()) {
            String id = res.getString("id");
            String name = res.getString("name");
            String sex = res.getString("sex");
            String age = res.getString("age");
            String dept = res.getString("dept");
            System.out.println(id + " " + name + " " + sex + " " + age + " " + dept);
        }
    }
    catch (SQLException e) {
        e.printStackTrace();
    }
}

接下来我们进行简单的插入操作(在这说明一下,数据库的信息一定是真实的、有效的!不然要这个数据库干嘛?;因为在此处演示,不方便透露一些信息,只能使用一些信息,请大家谅解;再强调一些:数据库的数据一定要真实、有效!不然要这个数据库干嘛?

/*
插入信息-insertInfo
 */
public void insertInfo() {
    try {
        ps = connection.prepareStatement(insert);
        ps.setString(1, "001");
        ps.setString(2, "张三");
        ps.setString(3, "男");
        ps.setString(4, "20");
        ps.setString(5, "计算机学院");
        ps.executeUpdate();
    }
    catch (SQLException e) {
        e.printStackTrace();
    }
}

 在执行插入和查询操作后,在idea可以看到以下信息。

接着我们去数据库看一下是否有成功插入

 

我们看到已经成功插入,说明我们的的连接和操作都是成功的;

接下来便是更新操作:

/*
根据id更新信息-updateInfo
 */
public void updateInfo() {
    try {
        ps = connection.prepareStatement(update);
        ps.setString(1, "人工智能学院");
        ps.setString(2, "001");
        ps.executeUpdate();
    }
    catch (SQLException e) {
        e.printStackTrace();
    }
}

 执行更新后的操作返回的结果

我们通过下图可以看到数据库已经被更新了 

 最后是删除操作了(数据不能删除,数据都是有价值的,此处只是演示)

再强调一遍(数据不能删除,只能是作标记;数据不能删除,只能是作标记;数据不能删除,只能是作标记;)重要的事情讲三遍

/*
根据学号删除信息-deleteInfo
 */
public void deleteInfo() {
    try {
        ps = connection.prepareStatement(delete);
        ps.setString(1, "001");
        ps.executeUpdate();
    }
    catch (SQLException e) {
        e.printStackTrace();
    }
}

 删除信息后,我们在看看idea中返回的信息,发现没有信息,还不能确定有没有被删除,接着去数据库看一下

我们可以发现这条内容真的被删除了。

 

 是不是就OK了?

其实我们最后需要断开连接:

/*
断开连接-close
 */
public void close() {
    if (connection != null) {
        try {
            connection.close();
            System.out.println("Disconnected");
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

 这样就完结了,撒花!

最后附上完整代码(这里没有附上测试类):

/**
 *  对数据库进行操作;
 *  具体功能:查询,插入,更新,删除(以为演示,此处不是标记,是真实删除;数据库不能删除只能标记)
 */
/**
 * @author zqincc<>
 *
 */
import java.sql.*;//导入mysql的驱动包

public class JDBC {
    private String driver = "com.mysql.cj.jdbc.Driver";//驱动名称
    private String url= "jdbc:mysql://localhost:3306/databasedemo?&useSSL=false&serverTimezone=UTC";//链接地址
    private String user = "root";//用户名
    private String password = "111111"; // 密码
    private String select = "select * from S";//此处查询所有
    private String insert = "insert into S(id, name, sex, age, dept) values( ?, ?, ?, ?, ?)";//插入
    private String update = "update S set dept= ? where id = ?";//更新
    private String delete = "delete from S where id = ?";//根据数据删除
    Connection connection = null;//连接
    PreparedStatement ps = null;//处理
    ResultSet res = null;//结果
    /*
    加载数据库-load
     */
    public void load() {
        try {
            Class.forName(driver);
            System.out.println("Successfully loaded");
        }
        catch(Exception e) {
            e.printStackTrace();
            System.out.println("failed to load");
        }
    }
    /*
    连接数据库-connect
     */
    public void connect() {
        try {
            connection = DriverManager.getConnection(url, user, password);
            System.out.println("Connection successful");
        }
        catch(SQLException e) {
            e.printStackTrace();
            System.out.print("Connection fail");
        }
    }
    /*
    查询信息(此处查询所有信息,可根据实践修改)-queryInfo
     */
    public void queryInfo() {
        try {
            ps = connection.prepareStatement(select);
            res = ps.executeQuery();
            while (res.next()) {
                String id = res.getString("id");
                String name = res.getString("name");
                String sex = res.getString("sex");
                String age = res.getString("age");
                String dept = res.getString("dept");
                System.out.println(id + " " + name + " " + sex + " " + age + " " + dept);
            }
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
    }
    /*
    插入信息-insertInfo
     */
    public void insertInfo() {
        try {
            ps = connection.prepareStatement(insert);
            ps.setString(1, "001");
            ps.setString(2, "张三");
            ps.setString(3, "男");
            ps.setString(4, "20");
            ps.setString(5, "计算机学院");
            ps.executeUpdate();
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
    }
    /*
    根据id更新信息-updateInfo
     */
    public void updateInfo() {
        try {
            ps = connection.prepareStatement(update);
            ps.setString(1, "人工智能学院");
            ps.setString(2, "001");
            ps.executeUpdate();
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
    }
    /*
    根据学号删除信息-deleteInfo
     */
    public void deleteInfo() {
        try {
            ps = connection.prepareStatement(delete);
            ps.setString(1, "001");
            ps.executeUpdate();
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
    }
    /*
    断开连接-close
     */
    public void close() {
        if (connection != null) {
            try {
                connection.close();
                System.out.println("Disconnected");
            }
            catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

/*
create table S
     (
     id varchar(11) not null,
     name varchar(100) not null,
     sex varchar(4) not null,
     age integer not null,
     dept varchar(100) not null,
     primary key (id)
     );
 */

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐