【Jdbc】java连接mysql数据库的两种不同连接方式

写在前面的话:    

在之前刚开始学数据库的时候,一直用Navicat这个数据库可视化管理工具来写sql,navicat很棒,但是一般我学习和写项目的时候用的更多应该是idea对吧,然后我就想着学习了一些jdbc的知识。

  下面是我在之前学习过程中我的一些对Jdbc的个人小总结和笔记,把这些写下来的目的其实我想着能够巩固自己,如果能帮到有需要的同学就更好了。

先让大家看一下视频演示:

【过程】java连接mysql数据库的两种方法

第一种:通过DriverManager创建连接对象进行连接

我们将jdbc导包后,便可以通过DriverManager里的一个静态方法getconnection()来建立与mysql数据库的连接,其中这个方法会返回一个connection对象,然后再通过这个connection对象来创建一个sql的执行对象来将我们的sql语句发送到mysql并执行。流程大致如此:

这里我们要注意,sql语言中DDL和DML以及DQL的执行会有些差别,它们执行后的返回值的数据类型也不一样。这些我会另外写一篇来说一下它们的区别,这里演示的是数据库的连接,下面我演示的就是DDL和DML语句,其返回值是一个int整型,表示的是我们写的sql语句在执行之后对表影响的行数是多少。

Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1?useSSL=false&useServerPrepStmts=true","root","1234");

在getConnection()方法中有三个形参要填入:url、name、password

url的格式是固定的为:

jdbc://mysql://ip+mysql的端口号//数据库的名称?键值对1&键值对2......

name 和password就是你mysql数据库管理员的账号密码了。

Statement s = c.createStatement();
        String sql="create table student( id int,name varchar (32),age int )";
        String sql2="insert into student(id,name,age) value (1,'张三',21),(2,'李四',20)";
        int i = s.executeUpdate(sql);
        int i1 = s.executeUpdate(sql2);
        //如果能输出这个返回的受影响的行数,则说明连接成功,且完成操作
        System.out.println(i);
        System.out.println(i1);

通过connection对象创建一个statement的执行对象,(这个执行对象也有多种,像PreparedStatement 就是可以防止sql注入的等等)。然后我们就简单的写一下sql语句,用String字符串来存放。

statement对象通过调用executeUpdate()方法来对sql语句进行执行,执行成功返回一个int整型。

整体代码如下:

package Connection_test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

//第一种连接方式
public class test1 {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1?useSSL=false&useServerPrepStmts=true","root","1234");
        Statement s = c.createStatement();
        String sql="create table student( id int,name varchar (32),age int )";
        String sql2="insert into student(id,name,age) value (1,'张三',21),(2,'李四',20)";
        int i = s.executeUpdate(sql);
        int i1 = s.executeUpdate(sql2);
        //如果能输出这个返回的受影响的行数,则说明连接成功,且完成操作
        System.out.println(i);
        System.out.println(i1);

    }
}

第二种:通过数据库连接池进行对mysql的连接

这里我用的是druid,阿里巴巴的,很好,很好。

数据库连接池的好处很多啊,它能实现资源复用,提高性能等等......大家可以在网上查一下它的优势。

我们在使用druid时,也是要进行导包的,导包完成后,还要定义配置文件,加载配置文件,获取数据库连接池对象,最后连接mysql数据库。

首先给大家看一下配置文件的格式需求:

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/test1?useSSL=false&
username=root
password=1234

#初始化在数据库连接池中的连接数量
initialSize=5
#最大连接数
maxActive=10

#最大的等待时间
maxwait=3000

这是一个properties文件,在里面写好了我们所需要的配置信息,和上面我们所说的通过DriverManager里的一个静态方法getconnection()来建立与mysql数据库的连接很相似,都要写上url、name、password。

大家知道数据库连接池的原理是在数据库连接池中预先就创建好了一定数量的连接来使用的,所以在这里还要设置好initialsize。

 //配置好数据库的连接信息
        Properties p1=new Properties();
        p1.load(new FileInputStream("jdbctest/src/druid.properties"));
        //创建数据库连接池对象
        DataSource ds = DruidDataSourceFactory.createDataSource(p1);

加载配置文件时,要先创建一个Properties的对象,调用load()方法来加载我们的配置文件,配置文件路径我创建的时候是这样,大家根据自己的路径写。

加载配置文件完成后,我们通过的是druidDatasourcefactory创建数据库连接池对象,再通过这一连接池对象创建connection对象。最后建立连接

整体代码如下:
 

package Connection_test;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.Statement;
import java.util.Properties;

public class test2 {
    public static void main(String[] args) throws Exception {
        //配置好数据库的连接信息
        Properties p1=new Properties();
        p1.load(new FileInputStream("jdbctest/src/druid.properties"));
        //创建数据库连接池对象
        DataSource ds = DruidDataSourceFactory.createDataSource(p1);
        //通过数据库连接池来创建Connachtion连接对象
        Connection c = ds.getConnection();
        Statement s = c.createStatement();
        //写sql
        String sql="insert into student value (3,'王五',19)";
        int i = s.executeUpdate(sql);
        System.out.println(i);

    }
}

大家回头可以试一下。写得有些零散,有些知识我不知道怎么用文字表达,害,希望之后能不断改善吧,大家一起共同进步!!!

你可能感兴趣的:(jdbc,数据库,mysql,java,sql)