MySQL-JDBC编程

目录

  • 前言
  • 一、JDBC使用步骤
    • 1.创建项目
    • 2. 引入依赖
      • 2.1 下载驱动包
      • 2.2 将驱动包导入到项目中
    • 3. 编写代码
      • 3.1 创建数据源
      • 3.2 让代码和数据库建立连接
      • 3.3 操作数据库(已插入数据库为例)
      • 3.4 执行sql,释放资源
  • 二、增删改查操作
    • 2.1 插入
    • 2.2 删除
    • 2.3 修改
    • 2.4 查找


前言

JDBC,即Java Database Connectivityjava数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个APIjava.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。


一、JDBC使用步骤

1.创建项目

打开IDEA,创建一个新的项目。

2. 引入依赖

JDBC编程需要用到 mysql的驱动包.(驱动包就是把 mysql自身的api给转换成jdbc风格的)驱动包是mysql官方提供的。

2.1 下载驱动包

数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包。同样的,要基于Java操作Oracle数据库则需要Oracle的数据库驱动包ojdbc
在中央仓库里面搜索mysql,出现以下页面:
MySQL-JDBC编程_第1张图片
点击进入,查看自己安装的MySQL版本号,如果安装的是5.*版本,就在里面下载对应的5.1.x系列,这里所下载的驱动版本要和MySQL的版本号相对于。
MySQL-JDBC编程_第2张图片
MySQL-JDBC编程_第3张图片
点击这个按钮,就会下载驱动包,得到一个jar这样的文件(就相当于.zip这样的压缩包一样),jar里面就是一些其他人写好的.class文件。

2.2 将驱动包导入到项目中

a)创建个目录,随便起个名字,例如叫做lib
b)把刚才下载的jar 文件拷贝到刚才的目录中;
c)右键刚才的目录,有一个选项,叫做Add as library,点击这个选项,才能把这个jar 引入到项目中,此时项目才会从jar里面读取内部的.class ,否则,代码就找不到jar 中的一些类。

3. 编写代码

3.1 创建数据源

创建DataSource对象,这个对象就描述了数据库服务器在哪

DataSource dataSource = new MysqlDataSource();
//设置数据库所在的地址
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false");
        //设置登录数据库的用户名
        ((MysqlDataSource) dataSource).setUser("root");//root是mysql默认自带的管理员用户
        //设置登录数据库的密码
        ((MysqlDataSource) dataSource).setPassword("1234");//自己设置的mysql登录密码

这里的URL:

jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false

jdbc:mysql:表示这里的URL是用于jdbc mysqlurl
127.0.0.1:IP地址,mysql 服务器所在的主机的IP地址,IP地址就描述了网络上一个主机的位置。这是一个特殊的IP地址就表示你的本机 IP(环回IP)。
3306:端口号,访问你这个主机上的哪个程序;3306表示了mysql服务器
(安装 mysql的时候,有个环节就是设置了mysql服务器的端口号.默认就是3306),每个服务器程序启动的时候,都关联一个端口号。
java1:自己的数据库里面所创建的数据库名。
characterEncoding=utf8:指定字符集是utf8
useSSL=false:不需要加密传输。

3.2 让代码和数据库建立连接

 Connection connection =  dataSource.getConnection();//这里需要抛出异常

这里所选择的Connectionjava.sql包下的。

3.3 操作数据库(已插入数据库为例)

Scanner scanner = new Scanner(System.in);
        //2.5让用户通过控制台输入待插入的数据
        System.out.println("请输入学号:");
        int id = scanner.nextInt();
        System.out.println("请输入姓名:");
        String name = scanner.next();
        
        //3.操作数据库,以插入数据库为例
        //构造一个SQL语句
        //直接将要插入的数据写死,不能更改,不够灵活
//        String sql = "insert into student1 values(1,'张')";
//通过字符串拼接这个操作来构造sql,也是可行的.但是并不科学!!!  1.这么写非常麻烦,容易写错.⒉这么写也容易引起"sql注入攻击”.黑客攻击服务器的一种手段~
//        String sql = "insert into student1 values(" + id + ",'" + name + "' )";
        String sql = "insert into student1 values(?,?)";
      //通过Connection里面的prepareStatement这个方法来构造语句对象的
      //这个操作就是把字符串风格的sql转成了一个JDBC里面的对象
        PreparedStatement statement = connection.prepareStatement(sql);

        //进行替换操作
        statement.setInt(1,id);//把第一个问号替换成id的值
        statement.setString(2,name);//把第二个?替换成name的值
        //通过这个打印操作,可以看出拼装好之后的SQL长啥样
        System.out.println("statement: " + statement);

3.4 执行sql,释放资源

//4.执行sql
        //就相当于控制台中多少行受到了影响
        int ret = statement.executeUpdate();
        System.out.println(ret);
        //5.sql执行完毕,释放资源
        statement.close();
        connection.close();

DataSource/MysqlDataSource用来描述数据源,描述数据库的地址,端口,数据库名,用户名,密码.
getConnection、Connection表示数据库连接~~
prepareStatement
PreparedStatement通过这个对象来描述要执行的SQL.
executeUpdate:增删改
executeQuery:查找

二、增删改查操作

2.1 插入

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;


public class TestJDBE {
    public static void main(String[] args) throws SQLException {

        //1.创建好数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");//root是mysql默认自带的管理员用户
        ((MysqlDataSource) dataSource).setPassword("123456");

        //2.让代码和数据库建立连接
        Connection connection =  dataSource.getConnection();//抛出异常
        Scanner scanner = new Scanner(System.in);
        //2.5让用户通过控制台输入待插入的数据
        System.out.println("请输入学号:");
        int id = scanner.nextInt();
        System.out.println("请输入姓名:");
        String name = scanner.next();


        //3.操作数据库,以插入数据库为例
        //构造一个SQL语句
//        String sql = "insert into student1 values(1,'张')";
//        String sql = "insert into student1 values(" + id + ",'" + name + "' )";
        String sql = "insert into student1 values(?,?)";

        PreparedStatement statement = connection.prepareStatement(sql);

        //进行替换操作
        statement.setInt(1,id);//把第一个问号替换成id的值
        statement.setString(2,name);//把第二个?替换成name的值
        System.out.println("statement: " + statement);

        //4.执行sql
        //就相当于控制台中多少行受到了影响
        int ret = statement.executeUpdate();
        System.out.println(ret);
        //5.sql执行完毕,释放资源
        statement.close();
        connection.close();

    }
}

2.2 删除

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class TestJDBCDelect {
    public static void main(String[] args) throws SQLException {
        //删除数据库中得记录
        //让用户输入一个id,根据id删除
        //1.创建数据源
        DataSource dataSource  = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");//root是mysql默认自带的管理员用户
        ((MysqlDataSource) dataSource).setPassword("123456");

        //2.建立连接
        Connection connection = dataSource.getConnection();

        //3.用户输入id
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入要删除的id:");
        int id =  scanner.nextInt();
        //4.进行替换
        String sql = "delete from student1 where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);
		//5.执行sql
        int ret = statement.executeUpdate();
        System.out.println("ret" + ret);
		//释放资源
        statement.close();
        connection.close();
    }
}

2.3 修改

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class TestJDBCUpdate {
    //通过输入id,修改对应id的name
    public static void main(String[] args) throws SQLException {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("123456");

        //建立数据库连接
        Connection connection = dataSource.getConnection();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要修改的 id:");
        int id = scanner.nextInt();
        System.out.println("请输入要修改的 name:");
        String name = scanner.next();

        String sql = "update student1 set name = ? where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name);
        statement.setInt(2,id);

        int ret = statement.executeUpdate();
        System.out.println("ret" + ret);

        statement.close();
        connection.close();
    }
}

2.4 查找

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TestJDBCSelect {
    public static void main(String[] args) throws SQLException {
        //创建资源库
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("123456");

        //建立连接
        Connection connection = dataSource.getConnection();
        //构造sql
        String sql = "select * from student1";
        PreparedStatement statement = connection.prepareStatement(sql);

        //执行sql
        ResultSet resultSet = statement.executeQuery();
        //遍历结果集合
        while (resultSet.next()){
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id:" + id +" name:" + name);
        }
        //释放资源
        resultSet.close();
        statement.close();
        connection.close();

    }
}


以上。

你可能感兴趣的:(MySQL,sql,数据库)