唐诗数据库 --- 将数据插入数据库

目的:

将之前获取到的数据全部插入数据库。

步骤:

(1)建好数据库和表。
(2)将数据插入对应的表中。

具体实现:

(1) 建数据库和数据表
建表代码:

 CREATE TABLE tangshi(
 	id INT PRIMARY KEY AUTO_INCREMENT,
 	sha256 CHAR(150) NOT NULL UNIQUE,
 	title VARCHAR(40) NOT NULL,
 	dynasty VARCHAR(30) NOT NULL,
 	author VARCHAR(20)NOT NULL,
 	content TEXT NOT NULL,
 	words TEXT NOT NULL
 )CHARSET utf8mb4;
tangshi 表的名称
id 主键,自增的唐诗序号
sha256 每首诗的唯一编码,避免数据库重复插入
title 题目,不得为空
dynasty 朝代,不得为空
author 作者,不得为空
content 正文,不得为空
words 分词,不得为空

(2)连接数据库
通过 MysqlConnectionPoolDataSource 获取 Connection,带有连接池,参照线程池。

MysqlConnectionPoolDataSource dataSource = new MysqlConnectionPoolDataSource ();
dataSource.setServerName ("127.0.0.1");//连接至本机
dataSource.setPort (3306);
dataSource.setUser ("root");
dataSource.setPassword ("******");//密码
dataSource.setDatabaseName ("tangpoetry");
dataSource.setUseSSL (false);
dataSource.setCharacterEncoding ("UTF-8");

(3)将数据插入数据库
将数据一一插入表中

try(Connection connection = (Connection) dataSource.getConnection()){
     
    String sql = "INSERT INTO tangshi"
            + "(sha256,title,dynasty,author,content,words)"//表中的数据项
            + "VALUES(?,?,?,?,?,?)";
    try(PreparedStatement statement = connection.prepareStatement (sql)){
     
    	//插入数据,即之前获取到的数据
        statement.setString (1,sha256);
        statement.setString (2,title);
        statement.setString (3,dynasty);
        statement.setString (4,author);
        statement.setString (5,content);
        statement.setString (6,words);
        statement.executeUpdate ();
    }
}

(1)MysqlConnectionPoolDataSource

单介绍一下数据源与连接池

  • 数据源(DataSource)是提供某种所需要数据的器件或原始媒体。
    JDBC中提供了javax.sql.DataSource接口,负责建立与数据库的连接。
    DataSource对象可以由Web服务器提供,前提是需要在服务器配置DataSource(包括连接池)

  • 数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。
    而连接池的概念就像是一个水池,装载的东西就是一个一个的连接通道。
    以前我们每次使用数据库,都建立连接,会需要重新登录,然后从中取出数据,最后再将数据库关闭。
    但是如果有了连接池,每次访问数据库的连接通道被保存在连接池中。连接池起到了中介的作用,之后如果要进行相同的访问时,那么就可以很快的打开连接通道,从而提高加载速度。

MysqlConnectionPoolDataSource就是一个连接池,用于连接数据库。

(2)PreparedStatement

public interface PreparedStatement extends Statement

表示预编译的SQL语句的对象。
SQL语句已预编译并存储在PreparedStatement对象中。 然后可以使用该对象多次有效地执行此语句。

你可能感兴趣的:(唐诗三百首)