[MySql]JDBC编程

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

目录

JDBC的使用:

1.下载驱动包,并添加到项目当中  

2.编程语句

2.1创建数据源

2.2与数据库建立连接

2.3构造sql语句

2.4执行sql语句

2.5释放资源

3.完整代码


JDBC的使用:

1.下载驱动包,并添加到项目当中  

驱动包下载地址:Maven Repository: mysql » mysql-connector-java (mvnrepository.com)

下载jar包 

  

按照MySql版本下载成功后,添加到对应要使用的项目当中.

对项目进行右键,创建一个新的文件夹(文件名随意)

下载完成的mysql驱动包右键选择复制,再对刚刚创建完成的文件夹Ctrl  + v.

 点击OK即可

右键添加驱动包的文件夹,选择Add as Library(让IDEA知道,这个文件夹作为存放库文件)

 现在就正式的完成了对驱动包的添加

2.编程语句

2.1创建数据源

DataSource是一个接口,为我们指明了数据库服务的位置

这一步我们要做的,主要是创建一个MysqlDataSource对象,并用DataSource类型来接收

MysqlDataSource是DataSource的一个子类,我们使用了向上转型主要是为了减少其耦合性,方便日后更换其他驱动包.

setURL/setUrl()方法:

        URL是唯一资源定位符,用来在网络上描述资源的位置.

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

URL的类型/用途,此处为Mysql进行服务

这个位置要存放的是数据库所在的设备的IP,而127.0.0.1为环回地址,指代自己的主机,即数据库与JAVA代码在用一台设备

端口号,用来区分主机上的进程

访问的数据库的名称,即打开Mysql后use table_name,的那个table_name

统一字符集为utf8

数据库与客户端之间的通信与否

 setUser()方法:

        用来放置要登录的数据库账户的用户名

setPassword()方法:

        放置登录账号的密码

DataSource dataSource = new MysqlDataSource();//创建一个datasource对象
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");

2.2与数据库建立连接

Connection connection = dataSource.getConnection();

要选择java.sql的Connection接口,并抛出相应的异常

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

2.3构造sql语句

String sql = ""; // 写出一个mysql语句

PreparedStatement statement = connection.prepareStatement(sql);
//对mysql语句进行预处理,验证mysql语句是否符合语法要求,能减轻mysql服务器的负担

也可以使用

Statement statement = connection.createStatement();//不进行处理,传输到mysql服务器上

方法一:

String sql = "insert into employee values('xiaoming','111','male')";
PreparedStatement statement = connection.prepareStatement(sql);

方法二:

Scanner scanner = new Scanner(System.in);
        String name = scanner.next();
        String id = scanner.next();
        String sex = scanner.next();

String sql = "insert into employee values(" + name + ", " + id + ", " + sex + ", " + ")";
PreparedStatement statement = connection.prepareStatement(sql);

方法三:(推荐)

使用占位符来替换,能够有效的避免出现SQL的注入攻击,也会更严格的进行校验语句是否正确

Scanner scanner = new Scanner(System.in);
        String name = scanner.next();
        String id = scanner.next();
        String sex = scanner.next();

String sql = "insert into employee values(?,?,?)";

        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name);//替换第一个占位符
        statement.setString(2,id);//替换第二个占位符
        statement.setString(3,sex);//替换第三个占位符

2.4执行sql语句

int n = statement.executeUpdate();//对于数据库的增,删,改可以使用此语句
//使用一个整数来接受返回值,含义为对于数据库所影响的数据行数
ResultSet resultSet = preparedStatement.executeQuery();//对于查询sql语句使用
//并使用ResultSet来接收返回值,含义为select得到的所有数据行

while(resultSet.next()){//每一次while循环以一行数据为单位,直到所有都打印完
    String name = resultSet.getString("name");
    String id = resultSet.getString("id");
    String sex = resultSet.getString("sex");
    System.out.println(name + " " + id + " " + " " + sex);
}

2.5释放资源

使用了什么就释放什么,并按照相反的使用顺序

resultSet.close();//只有查询语句并使用了ResultSet来接收executeQuery()才需要释放
preparedStatement.close();//释放预处理
connection.close();//释放连接

3.完整代码

增添,删除和更新数据的语句格式很类似,只有sql语句的区别
public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        String name = scanner.next();
        String id = scanner.next();
        String sex = scanner.next();
        //创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("021228");
        //和数据库建立连接
        Connection connection = dataSource.getConnection();
        //构造sql语句
        String sql = "insert into employee values(?,?,?)";

        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name);
        statement.setString(2,id);
        statement.setString(3,sex);
        System.out.println(statement);
        //执行sql语句
        int n = statement.executeUpdate();
        //释放资源,关闭连接
        statement.close();
        connection.close();
    }
查询数据
public static void main(String[] args) throws SQLException {
        //创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("021228");
        //建立连接
        Connection connection = dataSource.getConnection();
        //构造sql语句
        String sql = "select * from employee";
        //预处理sql语句
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        System.out.println(sql);
        //执行sql语句
        ResultSet resultSet = preparedStatement.executeQuery();
        while(resultSet.next()){//每一次while循环以一行数据为单位
            String name = resultSet.getString("name");
            String id = resultSet.getString("id");
            String sex = resultSet.getString("sex");
            System.out.println(name + " " + id + " " + " " + sex);
        }
        //释放资源
        resultSet.close();
        preparedStatement.close();
        connection.close();
    }

猜你喜欢

转载自blog.csdn.net/weixin_67719939/article/details/131793896