如何使用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