底下代碼,可以將 Java Python 化,更方便、更直覺的操控 MySQL。
完整代碼
請先新增 mysql.java,輸入如下完整代碼
package net.ddns.mahaljsp;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.ArrayList;
import java.sql.*;
public class mysql {
public static PyConnection connect(
String host,String user, String password, String database)throws SQLException{
return new PyConnection(host, user, password, database);
}
public static class PyConnection{
Connection conn;
public PyConnection(
String host, String user, String password, String database)throws SQLException{
String connStr="jdbc:mysql://%s/%s?useSSL=true&serverTimezone=UTC".formatted(host, database);
conn=DriverManager.getConnection(connStr,user,password);
}
public Cursor cursor()throws SQLException{
return new Cursor(conn);
}
public void close()throws SQLException{
conn.close();
}
}
public static class Cursor{
Connection conn;
public Cursor(Connection conn)throws SQLException{
this.conn=conn;
}
static ResultSet rs;
public void execute(String cmd)throws SQLException{
rs=null;
var stmt=conn.prepareStatement(cmd);
if (stmt.execute())rs=stmt.getResultSet();
}
public Map<String, Integer&rt; columns()throws SQLException{
ResultSetMetaData meta=rs.getMetaData();
Map<String, Integer&rt; datas=new LinkedHashMap<&rt;();
for(int i=1;i<=meta.getColumnCount();i++){
datas.put(meta.getColumnLabel(i), meta.getColumnType(i));
}
return datas;
}
public ArrayList<ArrayList<String&rt;&rt; fetchall()throws SQLException{
var meta=rs.getMetaData();
int count=meta.getColumnCount();
ArrayList<ArrayList<String&rt;&rt; datas=new ArrayList<&rt;();
while(rs.next()){
ArrayList item=new ArrayList();
for (int i=1;i<=count;i++){
item.add(rs.getString(i));
}
datas.add(item);
}
rs=null;
return datas;
}
}
}
todo
todo
