JDBC

1 连接JDBC

jdbc是连接java和数据库的桥梁,对于不同的数据库,如果我们希望用java连接,我们需要下载不同的驱动。这里我们使用mysql数据库,下载驱动。

MySQL :: Download MySQL Connector/J (Archived Versions)

JDBC_第1张图片

(版本自己选,操作系统选independent)

下载下来之后是应该压缩包

JDBC_第2张图片

打开压缩文件,以下面这个目录为例,把上面图片里的这个jar包复制到javaweb这个大文件夹下

JDBC_第3张图片

JDBC_第4张图片

注意是javaweb这个文件夹下,不是里面的src文件夹。

 然后打开idea,在idea里的目录里找到这个包(在下面这张图里红色的),右键,选择“添加为库”,然后点击确定即可。

JDBC_第5张图片

然后我们就可以开始写代码了,通过java来写sql语句操作数据库

package jdbc1;

import java.sql.*;

public class Database {
    public static void main(String args[]){
        try(
                //创建一个连接
                Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306","root","020809");
                //创建一个对象来执行sql语句
                Statement statement=connection.createStatement();
                //这两个东西都需要关闭,所以写进try里,自动关闭
           )
        {
            //存放sql执行完毕的结果
            ResultSet resultSet=statement.executeQuery("select * from accounting_ledger.ledger");
            //打印
            while(resultSet.next()){
                System.out.println(resultSet.getString(2));
            }

        }catch(SQLException e){
            e.printStackTrace();
        }
    }
}

注意:

1.DriverManager.getConnection("jdbc:mysql://localhost:3306","root","020809");三个参数依次是数据库的url,用户名,密码。

右键,选择属性,我们就能看到url了。

JDBC_第6张图片

JDBC_第7张图片

2.  ResultSet resultSet=statement.executeQuery("select * from accounting_ledger.ledger");中的“accounting_ledger”是架构,和表不是一个概念。

  • 架构是数据库的一个逻辑容器,用于组织和隔离数据库对象。一个数据库可以包含多个架构。
  • 表是数据库中存储数据的基本结构,由行和列组成。每个表都属于一个特定的架构。

在MySQL中,通常一个数据库对应一个架构,而一个架构包含多个表。架构提供了对数据库对象的一种逻辑组织方式,而表则用于存储和管理实际的数据。

2.执行SQL语句

执行DQL (Data Query Language)

       //存放sql执行完毕的结果
            ResultSet resultSet=statement.executeQuery("select * from accounting_ledger.ledger");
            //打印
            while(resultSet.next()){
                System.out.println(resultSet.getString(2));
            }

statement类的executeQuery方法返回一个resultSet对象,这个方法只用来执行select语句。

如果想打印数据,除了上面的getString方法之外,还可以选择以其他类型返回数据,比如getInt。

这里的resultSet类会返回一个指针,指针指向第一行。列不是从0开始的JDBC_第8张图片

当指针指向第一行的时候,我们可以读取第一行的任意列。

如果我们希望读取第二行的数据,就再次调用next方法即可。

 执行DML (Data Manipulation Language)

int i = statement.executeUpdate("INSERT INTO accounting_ledger.user VALUES ('lyx', '12345');");
            System.out.println("lines changed "+i);

statement类的executeUpdate方法返回一个int,表明执行的语句更改了多少行,这个方法用来执行insert,delect之类的语句。

批量处理

当我们希望插入多条数据的时候,我们可以选择使用多次executeUpdate,也可以选择先将语句加入缓存:

statement.addBatch("INSERT INTO accounting_ledger.user VALUES ('lyx', '12345');")
statement.addBatch("INSERT INTO accounting_ledger.user VALUES ('lyx1', '12345');")
statement.addBatch("INSERT INTO accounting_ledger.user VALUES ('lyx2', '12345');")
statement.addBatch("INSERT INTO accounting_ledger.user VALUES ('lyx3', '12345');")

然后一次执行全部

statement.executeBatch();

你可能感兴趣的:(java)