如何使用JDBC运行.SQL脚本?
数据库脚本文件是一个包含多个SQL查询的文件,这些查询彼此分隔。通常,这些文件具有.sql扩展名。
在Java中运行.sql脚本文件
您可以使用**Apache iBatis**的**ScriptRunner**类的**runScript()**方法在Java中执行.sql脚本文件。此方法需要您传递一个连接对象。
因此,要运行脚本文件:
- 使用**DriverManager**类的**registerDriver()**方法注册MySQL JDBC驱动程序。
- 使用**getConnection()**方法创建一个连接对象以建立与MySQL数据库的连接。
- 初始化包org.apache.ibatis.jdbc中的**ScriptRunner**类。
- 创建一个**Reader**对象来读取脚本文件。
- 最后,使用**runScript(reader)**方法执行脚本。
示例
让我们创建一个名为**sampleScript.sql**的脚本文件,并将以下内容复制到其中。此脚本在MySQL数据库中创建一个名为cricketers_data的表,并向其中填充五条记录。
CREATE DATABASE exampleDB;
use exampleDB;
CREATE TABLE exampleDB.cricketers_data(
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Date_Of_Birth date,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
insert into cricketers_data values('Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India');
insert into cricketers_data values('Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica');
insert into cricketers_data values('Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka');
insert into cricketers_data values('Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India');
insert into cricketers_data values('Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');
select * from mydatabase.cricketers_data;将以下maven依赖项(对于jar文件mybatis-3.4.1.jar)添加到您的pom.xml文件:
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency>
示例
以下JDBC程序执行sampleScript.sql文件。
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.ibatis.jdbc.ScriptRunner;
public class RunningScripts {
public static void main(String args[]) throws Exception {
//Registering the Driver
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//Getting the connection
String mysqlUrl = "jdbc:mysql:///talakai_noppi";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
System.out.println("Connection established......");
//Initialize the script runner
ScriptRunner sr = new ScriptRunner(con);
//Creating a reader object
Reader reader = new BufferedReader(new FileReader("E:\sampleScript.sql"));
//Running the script
sr.runScript(reader);
}
}输出
Connection established......
CREATE DATABASE exampleDB
use exampleDB
CREATE TABLE exampleDB.cricketers_data(
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Date_Of_Birth date,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
)
insert into cricketers_data values('Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India')
insert into cricketers_data values('Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica')
insert into cricketers_data values('Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka')
insert into cricketers_data values('Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India')
insert into cricketers_data values('Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India')
select * from mydatabase.cricketers_data
First_Name Last_Name Year_Of_Birth Place_Of_Birth Country
Shikhar Dhawan 1981-12-05 Delhi India
Jonathan Trott 1981-04-22 CapeTown SouthAfrica
Lumara Sangakkara 1977-10-27 Matale Srilanka
Virat Kohli 1988-11-05 Delhi India
Rohit Sharma 1987-04-30 Nagpur India
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP