MySQL Python 化

      在〈MySQL Python 化〉中尚無留言

底下代碼,可以將 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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *