This commit is contained in:
yutou
2021-04-01 14:44:02 +08:00
parent 79a5c4ad89
commit ef87b719fd
218 changed files with 24011 additions and 15 deletions

View File

@@ -0,0 +1,136 @@
package com.yutou.bilibili.sqlite;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class SQLiteManager {
protected Connection conn;
private String url = "jdbc:sqlite:";
private File sql;
public void startBatch() {
try {
conn.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void closeBatch() {
try {
conn.setAutoCommit(true);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void commit() {
try {
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
}
}
protected SQLiteManager() {
}
private void createSql(JSONObject json){
try {
sql.mkdirs();
sql.delete();
conn = DriverManager.getConnection(url + sql.getAbsolutePath());
}catch (Exception e){
e.printStackTrace();
}
startBatch();
JSONArray array=json.getJSONArray("table");
for (Object o : array) {
System.out.println("创建表:"+((JSONObject)o).getString("name"));
createSqlOfTable((JSONObject) o);
}
closeBatch();
}
private void createSqlOfTable(JSONObject table) {
String tableName = table.getString("name");
try {
Statement statement = conn.createStatement();
JSONArray items = table.getJSONArray("item");
StringBuilder sql = new StringBuilder();
sql.append("CREATE TABLE `")
.append(tableName)
.append("` (");
for (Object item : items) {
StringBuilder builder = new StringBuilder();
JSONObject it = (JSONObject) item;
String type;
switch (it.getString("type")) {
case "int":
type = " INTEGER ";
break;
case "TIME":
type = " NUMERIC ";
break;
default:
type = " TEXT ";
break;
}
builder.append("`")
.append(it.getString("name"))
.append("`")
.append(type)
.append(it.getBoolean("isNull") ? "" : " NOT NULL ")
.append(it.getBoolean("isKey") ? " PRIMARY KEY AUTOINCREMENT " : "")
.append(",");
sql.append(builder.toString());
}
sql.append(");");
statement.execute(sql.toString().replace(",);", ");"));
statement.closeOnCompletion();
} catch (Exception e) {
e.printStackTrace();
}
}
protected void build(JSONObject json) {
try {
Class.forName("org.sqlite.JDBC");
sql = new File("databases" + File.separator + json.getString("file"));
if (!sql.exists()) {
createSql(json);
} else {
conn = DriverManager.getConnection(url + sql.getAbsolutePath());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean setDB(String fileName) {
try {
Class.forName("org.sqlite.JDBC");
sql = new File("db" + File.separator + fileName);
if (sql.exists()) {
if (conn != null && !conn.isClosed()) {
conn.close();
}
conn = DriverManager.getConnection(url + sql.getAbsolutePath());
return true;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static void main(String[] args) {
}
}