import typing

import java
import java.chaquopy
import java.io
import java.lang
import java.math
import java.net
import java.security
import java.util

class Array(java.lang.Object):
    def free(self) -> None: ...
    @typing.overload
    def getArray(self) -> java.lang.Object: ...
    @typing.overload
    def getArray(self, arg1: java.util.Map[java.lang.String, typing.Type[java.lang.Object]], /) -> java.lang.Object: ...
    @typing.overload
    def getArray(self, arg1: int | java.jlong | java.lang.Long, arg2: int | java.jint | java.lang.Integer, /) -> java.lang.Object: ...
    @typing.overload
    def getArray(self, arg1: int | java.jlong | java.lang.Long, arg2: int | java.jint | java.lang.Integer, arg3: java.util.Map[java.lang.String, typing.Type[java.lang.Object]], /) -> java.lang.Object: ...
    def getBaseType(self) -> int: ...
    def getBaseTypeName(self) -> str: ...
    @typing.overload
    def getResultSet(self) -> ResultSet: ...
    @typing.overload
    def getResultSet(self, arg1: java.util.Map[java.lang.String, typing.Type[java.lang.Object]], /) -> ResultSet: ...
    @typing.overload
    def getResultSet(self, arg1: int | java.jlong | java.lang.Long, arg2: int | java.jint | java.lang.Integer, /) -> ResultSet: ...
    @typing.overload
    def getResultSet(self, arg1: int | java.jlong | java.lang.Long, arg2: int | java.jint | java.lang.Integer, arg3: java.util.Map[java.lang.String, typing.Type[java.lang.Object]], /) -> ResultSet: ...

class BatchUpdateException(SQLException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, updateCounts: java.chaquopy.JavaArrayJInt, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, updateCounts: java.chaquopy.JavaArrayJInt, /) -> None: ...
    @typing.overload
    def __init__(self, updateCounts: java.chaquopy.JavaArrayJInt, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, updateCounts: java.chaquopy.JavaArrayJInt, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, updateCounts: java.chaquopy.JavaArrayJInt, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, updateCounts: java.chaquopy.JavaArrayJInt, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, updateCounts: java.chaquopy.JavaArrayJInt, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, updateCounts: java.chaquopy.JavaArrayJInt, cause: java.lang.Throwable, /) -> None: ...
    def getUpdateCounts(self) -> java.chaquopy.JavaArrayJInt: ...

class Blob(java.lang.Object):
    def free(self) -> None: ...
    @typing.overload
    def getBinaryStream(self) -> java.io.InputStream: ...
    @typing.overload
    def getBinaryStream(self, arg1: int | java.jlong | java.lang.Long, arg2: int | java.jlong | java.lang.Long, /) -> java.io.InputStream: ...
    def getBytes(self, arg1: int | java.jlong | java.lang.Long, arg2: int | java.jint | java.lang.Integer, /) -> java.chaquopy.JavaArrayJByte: ...
    def length(self) -> int: ...
    @typing.overload
    def position(self, arg1: Blob, arg2: int | java.jlong | java.lang.Long, /) -> int: ...
    @typing.overload
    def position(self, arg1: java.chaquopy.JavaArrayJByte, arg2: int | java.jlong | java.lang.Long, /) -> int: ...
    def setBinaryStream(self, arg1: int | java.jlong | java.lang.Long, /) -> java.io.OutputStream: ...
    @typing.overload
    def setBytes(self, arg1: int | java.jlong | java.lang.Long, arg2: java.chaquopy.JavaArrayJByte, /) -> int: ...
    @typing.overload
    def setBytes(self, arg1: int | java.jlong | java.lang.Long, arg2: java.chaquopy.JavaArrayJByte, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jint | java.lang.Integer, /) -> int: ...
    def truncate(self, arg1: int | java.jlong | java.lang.Long, /) -> None: ...

class CallableStatement(PreparedStatement):
    @typing.overload
    def getArray(self, arg1: int | java.jint | java.lang.Integer, /) -> Array: ...
    @typing.overload
    def getArray(self, arg1: str | java.lang.String, /) -> Array: ...
    @typing.overload
    def getBigDecimal(self, arg1: int | java.jint | java.lang.Integer, /) -> java.math.BigDecimal: ...
    @typing.overload
    def getBigDecimal(self, arg1: str | java.lang.String, /) -> java.math.BigDecimal: ...
    @typing.overload
    def getBigDecimal(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> java.math.BigDecimal: ...
    @typing.overload
    def getBlob(self, arg1: int | java.jint | java.lang.Integer, /) -> Blob: ...
    @typing.overload
    def getBlob(self, arg1: str | java.lang.String, /) -> Blob: ...
    @typing.overload
    def getBoolean(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    @typing.overload
    def getBoolean(self, arg1: str | java.lang.String, /) -> bool: ...
    @typing.overload
    def getByte(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    @typing.overload
    def getByte(self, arg1: str | java.lang.String, /) -> int: ...
    @typing.overload
    def getBytes(self, arg1: int | java.jint | java.lang.Integer, /) -> java.chaquopy.JavaArrayJByte: ...
    @typing.overload
    def getBytes(self, arg1: str | java.lang.String, /) -> java.chaquopy.JavaArrayJByte: ...
    @typing.overload
    def getCharacterStream(self, arg1: int | java.jint | java.lang.Integer, /) -> java.io.Reader: ...
    @typing.overload
    def getCharacterStream(self, arg1: str | java.lang.String, /) -> java.io.Reader: ...
    @typing.overload
    def getClob(self, arg1: int | java.jint | java.lang.Integer, /) -> Clob: ...
    @typing.overload
    def getClob(self, arg1: str | java.lang.String, /) -> Clob: ...
    @typing.overload
    def getDate(self, arg1: int | java.jint | java.lang.Integer, /) -> Date: ...
    @typing.overload
    def getDate(self, arg1: str | java.lang.String, /) -> Date: ...
    @typing.overload
    def getDate(self, arg1: int | java.jint | java.lang.Integer, arg2: java.util.Calendar, /) -> Date: ...
    @typing.overload
    def getDate(self, arg1: str | java.lang.String, arg2: java.util.Calendar, /) -> Date: ...
    @typing.overload
    def getDouble(self, arg1: int | java.jint | java.lang.Integer, /) -> float: ...
    @typing.overload
    def getDouble(self, arg1: str | java.lang.String, /) -> float: ...
    @typing.overload
    def getFloat(self, arg1: int | java.jint | java.lang.Integer, /) -> float: ...
    @typing.overload
    def getFloat(self, arg1: str | java.lang.String, /) -> float: ...
    @typing.overload
    def getInt(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    @typing.overload
    def getInt(self, arg1: str | java.lang.String, /) -> int: ...
    @typing.overload
    def getLong(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    @typing.overload
    def getLong(self, arg1: str | java.lang.String, /) -> int: ...
    @typing.overload
    def getNCharacterStream(self, arg1: int | java.jint | java.lang.Integer, /) -> java.io.Reader: ...
    @typing.overload
    def getNCharacterStream(self, arg1: str | java.lang.String, /) -> java.io.Reader: ...
    @typing.overload
    def getNClob(self, arg1: int | java.jint | java.lang.Integer, /) -> NClob: ...
    @typing.overload
    def getNClob(self, arg1: str | java.lang.String, /) -> NClob: ...
    @typing.overload
    def getNString(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    @typing.overload
    def getNString(self, arg1: str | java.lang.String, /) -> str: ...
    @typing.overload
    def getObject(self, arg1: int | java.jint | java.lang.Integer, /) -> java.lang.Object: ...
    @typing.overload
    def getObject(self, arg1: str | java.lang.String, /) -> java.lang.Object: ...
    @typing.overload
    def getObject(self, arg1: int | java.jint | java.lang.Integer, arg2: java.util.Map[java.lang.String, typing.Type[java.lang.Object]], /) -> java.lang.Object: ...
    @typing.overload
    def getObject(self, arg1: str | java.lang.String, arg2: java.util.Map[java.lang.String, typing.Type[java.lang.Object]], /) -> java.lang.Object: ...
    @typing.overload
    def getRef(self, arg1: int | java.jint | java.lang.Integer, /) -> Ref: ...
    @typing.overload
    def getRef(self, arg1: str | java.lang.String, /) -> Ref: ...
    @typing.overload
    def getRowId(self, arg1: int | java.jint | java.lang.Integer, /) -> RowId: ...
    @typing.overload
    def getRowId(self, arg1: str | java.lang.String, /) -> RowId: ...
    @typing.overload
    def getSQLXML(self, arg1: int | java.jint | java.lang.Integer, /) -> SQLXML: ...
    @typing.overload
    def getSQLXML(self, arg1: str | java.lang.String, /) -> SQLXML: ...
    @typing.overload
    def getShort(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    @typing.overload
    def getShort(self, arg1: str | java.lang.String, /) -> int: ...
    @typing.overload
    def getString(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    @typing.overload
    def getString(self, arg1: str | java.lang.String, /) -> str: ...
    @typing.overload
    def getTime(self, arg1: int | java.jint | java.lang.Integer, /) -> Time: ...
    @typing.overload
    def getTime(self, arg1: str | java.lang.String, /) -> Time: ...
    @typing.overload
    def getTime(self, arg1: int | java.jint | java.lang.Integer, arg2: java.util.Calendar, /) -> Time: ...
    @typing.overload
    def getTime(self, arg1: str | java.lang.String, arg2: java.util.Calendar, /) -> Time: ...
    @typing.overload
    def getTimestamp(self, arg1: int | java.jint | java.lang.Integer, /) -> Timestamp: ...
    @typing.overload
    def getTimestamp(self, arg1: str | java.lang.String, /) -> Timestamp: ...
    @typing.overload
    def getTimestamp(self, arg1: int | java.jint | java.lang.Integer, arg2: java.util.Calendar, /) -> Timestamp: ...
    @typing.overload
    def getTimestamp(self, arg1: str | java.lang.String, arg2: java.util.Calendar, /) -> Timestamp: ...
    @typing.overload
    def getURL(self, arg1: int | java.jint | java.lang.Integer, /) -> java.net.URL: ...
    @typing.overload
    def getURL(self, arg1: str | java.lang.String, /) -> java.net.URL: ...
    @typing.overload
    def registerOutParameter(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def registerOutParameter(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def registerOutParameter(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def registerOutParameter(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, arg3: str | java.lang.String, /) -> None: ...
    @typing.overload
    def registerOutParameter(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def registerOutParameter(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, arg3: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setAsciiStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def setAsciiStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setAsciiStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    def setBigDecimal(self, arg1: str | java.lang.String, arg2: java.math.BigDecimal, /) -> None: ...
    @typing.overload
    def setBinaryStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def setBinaryStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setBinaryStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setBlob(self, arg1: str | java.lang.String, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def setBlob(self, arg1: str | java.lang.String, arg2: Blob, /) -> None: ...
    @typing.overload
    def setBlob(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    def setBoolean(self, arg1: str | java.lang.String, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setByte(self, arg1: str | java.lang.String, arg2: int | java.jbyte | java.lang.Byte, /) -> None: ...
    def setBytes(self, arg1: str | java.lang.String, arg2: java.chaquopy.JavaArrayJByte, /) -> None: ...
    @typing.overload
    def setCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setClob(self, arg1: str | java.lang.String, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setClob(self, arg1: str | java.lang.String, arg2: Clob, /) -> None: ...
    @typing.overload
    def setClob(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setDate(self, arg1: str | java.lang.String, arg2: Date, /) -> None: ...
    @typing.overload
    def setDate(self, arg1: str | java.lang.String, arg2: Date, arg3: java.util.Calendar, /) -> None: ...
    def setDouble(self, arg1: str | java.lang.String, arg2: float | java.jdouble | java.lang.Double, /) -> None: ...
    def setFloat(self, arg1: str | java.lang.String, arg2: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setInt(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    def setLong(self, arg1: str | java.lang.String, arg2: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setNCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setNCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setNClob(self, arg1: str | java.lang.String, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setNClob(self, arg1: str | java.lang.String, arg2: NClob, /) -> None: ...
    @typing.overload
    def setNClob(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    def setNString(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setNull(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setNull(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, arg3: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setObject(self, arg1: str | java.lang.String, arg2: java.lang.Object | int | bool | float | str, /) -> None: ...
    @typing.overload
    def setObject(self, arg1: str | java.lang.String, arg2: java.lang.Object | int | bool | float | str, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setObject(self, arg1: str | java.lang.String, arg2: java.lang.Object | int | bool | float | str, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jint | java.lang.Integer, /) -> None: ...
    def setRowId(self, arg1: str | java.lang.String, arg2: RowId, /) -> None: ...
    def setSQLXML(self, arg1: str | java.lang.String, arg2: SQLXML, /) -> None: ...
    def setShort(self, arg1: str | java.lang.String, arg2: int | java.jshort | java.lang.Short, /) -> None: ...
    def setString(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setTime(self, arg1: str | java.lang.String, arg2: Time, /) -> None: ...
    @typing.overload
    def setTime(self, arg1: str | java.lang.String, arg2: Time, arg3: java.util.Calendar, /) -> None: ...
    @typing.overload
    def setTimestamp(self, arg1: str | java.lang.String, arg2: Timestamp, /) -> None: ...
    @typing.overload
    def setTimestamp(self, arg1: str | java.lang.String, arg2: Timestamp, arg3: java.util.Calendar, /) -> None: ...
    def setURL(self, arg1: str | java.lang.String, arg2: java.net.URL, /) -> None: ...
    def wasNull(self) -> bool: ...

class ClientInfoStatus(java.lang.Enum[ClientInfoStatus]):
    REASON_UNKNOWN: typing.ClassVar[ClientInfoStatus] = ...
    REASON_UNKNOWN_PROPERTY: typing.ClassVar[ClientInfoStatus] = ...
    REASON_VALUE_INVALID: typing.ClassVar[ClientInfoStatus] = ...
    REASON_VALUE_TRUNCATED: typing.ClassVar[ClientInfoStatus] = ...
    @staticmethod
    def valueOf(name: str | java.lang.String, /) -> ClientInfoStatus: ...
    @staticmethod
    def values() -> java.chaquopy.JavaArray[ClientInfoStatus]: ...

class Clob(java.lang.Object):
    def free(self) -> None: ...
    def getAsciiStream(self) -> java.io.InputStream: ...
    @typing.overload
    def getCharacterStream(self) -> java.io.Reader: ...
    @typing.overload
    def getCharacterStream(self, arg1: int | java.jlong | java.lang.Long, arg2: int | java.jlong | java.lang.Long, /) -> java.io.Reader: ...
    def getSubString(self, arg1: int | java.jlong | java.lang.Long, arg2: int | java.jint | java.lang.Integer, /) -> str: ...
    def length(self) -> int: ...
    @typing.overload
    def position(self, arg1: str | java.lang.String, arg2: int | java.jlong | java.lang.Long, /) -> int: ...
    @typing.overload
    def position(self, arg1: Clob, arg2: int | java.jlong | java.lang.Long, /) -> int: ...
    def setAsciiStream(self, arg1: int | java.jlong | java.lang.Long, /) -> java.io.OutputStream: ...
    def setCharacterStream(self, arg1: int | java.jlong | java.lang.Long, /) -> java.io.Writer: ...
    @typing.overload
    def setString(self, arg1: int | java.jlong | java.lang.Long, arg2: str | java.lang.String, /) -> int: ...
    @typing.overload
    def setString(self, arg1: int | java.jlong | java.lang.Long, arg2: str | java.lang.String, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jint | java.lang.Integer, /) -> int: ...
    def truncate(self, arg1: int | java.jlong | java.lang.Long, /) -> None: ...

class Connection(Wrapper, java.lang.AutoCloseable):
    TRANSACTION_NONE: typing.ClassVar[int] = ...
    TRANSACTION_READ_COMMITTED: typing.ClassVar[int] = ...
    TRANSACTION_READ_UNCOMMITTED: typing.ClassVar[int] = ...
    TRANSACTION_REPEATABLE_READ: typing.ClassVar[int] = ...
    TRANSACTION_SERIALIZABLE: typing.ClassVar[int] = ...
    def clearWarnings(self) -> None: ...
    def close(self) -> None: ...
    def commit(self) -> None: ...
    def createArrayOf(self, arg1: str | java.lang.String, arg2: java.chaquopy.JavaArray[java.lang.Object], /) -> Array: ...
    def createBlob(self) -> Blob: ...
    def createClob(self) -> Clob: ...
    def createNClob(self) -> NClob: ...
    def createSQLXML(self) -> SQLXML: ...
    @typing.overload
    def createStatement(self) -> Statement: ...
    @typing.overload
    def createStatement(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> Statement: ...
    @typing.overload
    def createStatement(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, /) -> Statement: ...
    def createStruct(self, arg1: str | java.lang.String, arg2: java.chaquopy.JavaArray[java.lang.Object], /) -> Struct: ...
    def getAutoCommit(self) -> bool: ...
    def getCatalog(self) -> str: ...
    @typing.overload
    def getClientInfo(self) -> java.util.Properties: ...
    @typing.overload
    def getClientInfo(self, arg1: str | java.lang.String, /) -> str: ...
    def getHoldability(self) -> int: ...
    def getMetaData(self) -> DatabaseMetaData: ...
    def getTransactionIsolation(self) -> int: ...
    def getTypeMap(self) -> java.util.Map[java.lang.String, typing.Type[java.lang.Object]]: ...
    def getWarnings(self) -> SQLWarning: ...
    def isClosed(self) -> bool: ...
    def isReadOnly(self) -> bool: ...
    def isValid(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def nativeSQL(self, arg1: str | java.lang.String, /) -> str: ...
    @typing.overload
    def prepareCall(self, arg1: str | java.lang.String, /) -> CallableStatement: ...
    @typing.overload
    def prepareCall(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, /) -> CallableStatement: ...
    @typing.overload
    def prepareCall(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jint | java.lang.Integer, /) -> CallableStatement: ...
    @typing.overload
    def prepareStatement(self, arg1: str | java.lang.String, /) -> PreparedStatement: ...
    @typing.overload
    def prepareStatement(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> PreparedStatement: ...
    @typing.overload
    def prepareStatement(self, arg1: str | java.lang.String, arg2: java.chaquopy.JavaArrayJInt, /) -> PreparedStatement: ...
    @typing.overload
    def prepareStatement(self, arg1: str | java.lang.String, arg2: java.chaquopy.JavaArray[java.lang.String], /) -> PreparedStatement: ...
    @typing.overload
    def prepareStatement(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, /) -> PreparedStatement: ...
    @typing.overload
    def prepareStatement(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jint | java.lang.Integer, /) -> PreparedStatement: ...
    def releaseSavepoint(self, arg1: Savepoint, /) -> None: ...
    @typing.overload
    def rollback(self) -> None: ...
    @typing.overload
    def rollback(self, arg1: Savepoint, /) -> None: ...
    def setAutoCommit(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setCatalog(self, arg1: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setClientInfo(self, arg1: java.util.Properties, /) -> None: ...
    @typing.overload
    def setClientInfo(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> None: ...
    def setHoldability(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setReadOnly(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def setSavepoint(self) -> Savepoint: ...
    @typing.overload
    def setSavepoint(self, arg1: str | java.lang.String, /) -> Savepoint: ...
    def setTransactionIsolation(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setTypeMap(self, arg1: java.util.Map[java.lang.String, typing.Type[java.lang.Object]], /) -> None: ...

class DataTruncation(SQLWarning):
    @typing.overload
    def __init__(self, index: int | java.jint | java.lang.Integer, parameter: bool | java.jboolean | java.lang.Boolean, read: bool | java.jboolean | java.lang.Boolean, dataSize: int | java.jint | java.lang.Integer, transferSize: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, index: int | java.jint | java.lang.Integer, parameter: bool | java.jboolean | java.lang.Boolean, read: bool | java.jboolean | java.lang.Boolean, dataSize: int | java.jint | java.lang.Integer, transferSize: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...
    def getDataSize(self) -> int: ...
    def getIndex(self) -> int: ...
    def getParameter(self) -> bool: ...
    def getRead(self) -> bool: ...
    def getTransferSize(self) -> int: ...

class DatabaseMetaData(Wrapper):
    attributeNoNulls: typing.ClassVar[int] = ...
    attributeNullable: typing.ClassVar[int] = ...
    attributeNullableUnknown: typing.ClassVar[int] = ...
    bestRowNotPseudo: typing.ClassVar[int] = ...
    bestRowPseudo: typing.ClassVar[int] = ...
    bestRowSession: typing.ClassVar[int] = ...
    bestRowTemporary: typing.ClassVar[int] = ...
    bestRowTransaction: typing.ClassVar[int] = ...
    bestRowUnknown: typing.ClassVar[int] = ...
    columnNoNulls: typing.ClassVar[int] = ...
    columnNullable: typing.ClassVar[int] = ...
    columnNullableUnknown: typing.ClassVar[int] = ...
    functionColumnIn: typing.ClassVar[int] = ...
    functionColumnInOut: typing.ClassVar[int] = ...
    functionColumnOut: typing.ClassVar[int] = ...
    functionColumnResult: typing.ClassVar[int] = ...
    functionColumnUnknown: typing.ClassVar[int] = ...
    functionNoNulls: typing.ClassVar[int] = ...
    functionNoTable: typing.ClassVar[int] = ...
    functionNullable: typing.ClassVar[int] = ...
    functionNullableUnknown: typing.ClassVar[int] = ...
    functionResultUnknown: typing.ClassVar[int] = ...
    functionReturn: typing.ClassVar[int] = ...
    functionReturnsTable: typing.ClassVar[int] = ...
    importedKeyCascade: typing.ClassVar[int] = ...
    importedKeyInitiallyDeferred: typing.ClassVar[int] = ...
    importedKeyInitiallyImmediate: typing.ClassVar[int] = ...
    importedKeyNoAction: typing.ClassVar[int] = ...
    importedKeyNotDeferrable: typing.ClassVar[int] = ...
    importedKeyRestrict: typing.ClassVar[int] = ...
    importedKeySetDefault: typing.ClassVar[int] = ...
    importedKeySetNull: typing.ClassVar[int] = ...
    procedureColumnIn: typing.ClassVar[int] = ...
    procedureColumnInOut: typing.ClassVar[int] = ...
    procedureColumnOut: typing.ClassVar[int] = ...
    procedureColumnResult: typing.ClassVar[int] = ...
    procedureColumnReturn: typing.ClassVar[int] = ...
    procedureColumnUnknown: typing.ClassVar[int] = ...
    procedureNoNulls: typing.ClassVar[int] = ...
    procedureNoResult: typing.ClassVar[int] = ...
    procedureNullable: typing.ClassVar[int] = ...
    procedureNullableUnknown: typing.ClassVar[int] = ...
    procedureResultUnknown: typing.ClassVar[int] = ...
    procedureReturnsResult: typing.ClassVar[int] = ...
    sqlStateSQL99: typing.ClassVar[int] = ...
    sqlStateSQL: typing.ClassVar[int] = ...
    sqlStateXOpen: typing.ClassVar[int] = ...
    tableIndexClustered: typing.ClassVar[int] = ...
    tableIndexHashed: typing.ClassVar[int] = ...
    tableIndexOther: typing.ClassVar[int] = ...
    tableIndexStatistic: typing.ClassVar[int] = ...
    typeNoNulls: typing.ClassVar[int] = ...
    typeNullable: typing.ClassVar[int] = ...
    typeNullableUnknown: typing.ClassVar[int] = ...
    typePredBasic: typing.ClassVar[int] = ...
    typePredChar: typing.ClassVar[int] = ...
    typePredNone: typing.ClassVar[int] = ...
    typeSearchable: typing.ClassVar[int] = ...
    versionColumnNotPseudo: typing.ClassVar[int] = ...
    versionColumnPseudo: typing.ClassVar[int] = ...
    versionColumnUnknown: typing.ClassVar[int] = ...
    def allProceduresAreCallable(self) -> bool: ...
    def allTablesAreSelectable(self) -> bool: ...
    def autoCommitFailureClosesAllResultSets(self) -> bool: ...
    def dataDefinitionCausesTransactionCommit(self) -> bool: ...
    def dataDefinitionIgnoredInTransactions(self) -> bool: ...
    def deletesAreDetected(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def doesMaxRowSizeIncludeBlobs(self) -> bool: ...
    def getAttributes(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, arg4: str | java.lang.String, /) -> ResultSet: ...
    def getBestRowIdentifier(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, arg4: int | java.jint | java.lang.Integer, arg5: bool | java.jboolean | java.lang.Boolean, /) -> ResultSet: ...
    def getCatalogSeparator(self) -> str: ...
    def getCatalogTerm(self) -> str: ...
    def getCatalogs(self) -> ResultSet: ...
    def getClientInfoProperties(self) -> ResultSet: ...
    def getColumnPrivileges(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, arg4: str | java.lang.String, /) -> ResultSet: ...
    def getColumns(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, arg4: str | java.lang.String, /) -> ResultSet: ...
    def getConnection(self) -> Connection: ...
    def getCrossReference(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, arg4: str | java.lang.String, arg5: str | java.lang.String, arg6: str | java.lang.String, /) -> ResultSet: ...
    def getDatabaseMajorVersion(self) -> int: ...
    def getDatabaseMinorVersion(self) -> int: ...
    def getDatabaseProductName(self) -> str: ...
    def getDatabaseProductVersion(self) -> str: ...
    def getDefaultTransactionIsolation(self) -> int: ...
    def getDriverMajorVersion(self) -> int: ...
    def getDriverMinorVersion(self) -> int: ...
    def getDriverName(self) -> str: ...
    def getDriverVersion(self) -> str: ...
    def getExportedKeys(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, /) -> ResultSet: ...
    def getExtraNameCharacters(self) -> str: ...
    def getFunctionColumns(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, arg4: str | java.lang.String, /) -> ResultSet: ...
    def getFunctions(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, /) -> ResultSet: ...
    def getIdentifierQuoteString(self) -> str: ...
    def getImportedKeys(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, /) -> ResultSet: ...
    def getIndexInfo(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, arg4: bool | java.jboolean | java.lang.Boolean, arg5: bool | java.jboolean | java.lang.Boolean, /) -> ResultSet: ...
    def getJDBCMajorVersion(self) -> int: ...
    def getJDBCMinorVersion(self) -> int: ...
    def getMaxBinaryLiteralLength(self) -> int: ...
    def getMaxCatalogNameLength(self) -> int: ...
    def getMaxCharLiteralLength(self) -> int: ...
    def getMaxColumnNameLength(self) -> int: ...
    def getMaxColumnsInGroupBy(self) -> int: ...
    def getMaxColumnsInIndex(self) -> int: ...
    def getMaxColumnsInOrderBy(self) -> int: ...
    def getMaxColumnsInSelect(self) -> int: ...
    def getMaxColumnsInTable(self) -> int: ...
    def getMaxConnections(self) -> int: ...
    def getMaxCursorNameLength(self) -> int: ...
    def getMaxIndexLength(self) -> int: ...
    def getMaxProcedureNameLength(self) -> int: ...
    def getMaxRowSize(self) -> int: ...
    def getMaxSchemaNameLength(self) -> int: ...
    def getMaxStatementLength(self) -> int: ...
    def getMaxStatements(self) -> int: ...
    def getMaxTableNameLength(self) -> int: ...
    def getMaxTablesInSelect(self) -> int: ...
    def getMaxUserNameLength(self) -> int: ...
    def getNumericFunctions(self) -> str: ...
    def getPrimaryKeys(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, /) -> ResultSet: ...
    def getProcedureColumns(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, arg4: str | java.lang.String, /) -> ResultSet: ...
    def getProcedureTerm(self) -> str: ...
    def getProcedures(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, /) -> ResultSet: ...
    def getResultSetHoldability(self) -> int: ...
    def getRowIdLifetime(self) -> RowIdLifetime: ...
    def getSQLKeywords(self) -> str: ...
    def getSQLStateType(self) -> int: ...
    def getSchemaTerm(self) -> str: ...
    @typing.overload
    def getSchemas(self) -> ResultSet: ...
    @typing.overload
    def getSchemas(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> ResultSet: ...
    def getSearchStringEscape(self) -> str: ...
    def getStringFunctions(self) -> str: ...
    def getSuperTables(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, /) -> ResultSet: ...
    def getSuperTypes(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, /) -> ResultSet: ...
    def getSystemFunctions(self) -> str: ...
    def getTablePrivileges(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, /) -> ResultSet: ...
    def getTableTypes(self) -> ResultSet: ...
    def getTables(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, arg4: java.chaquopy.JavaArray[java.lang.String], /) -> ResultSet: ...
    def getTimeDateFunctions(self) -> str: ...
    def getTypeInfo(self) -> ResultSet: ...
    def getUDTs(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, arg4: java.chaquopy.JavaArrayJInt, /) -> ResultSet: ...
    def getURL(self) -> str: ...
    def getUserName(self) -> str: ...
    def getVersionColumns(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, /) -> ResultSet: ...
    def insertsAreDetected(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isCatalogAtStart(self) -> bool: ...
    def isReadOnly(self) -> bool: ...
    def locatorsUpdateCopy(self) -> bool: ...
    def nullPlusNonNullIsNull(self) -> bool: ...
    def nullsAreSortedAtEnd(self) -> bool: ...
    def nullsAreSortedAtStart(self) -> bool: ...
    def nullsAreSortedHigh(self) -> bool: ...
    def nullsAreSortedLow(self) -> bool: ...
    def othersDeletesAreVisible(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def othersInsertsAreVisible(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def othersUpdatesAreVisible(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def ownDeletesAreVisible(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def ownInsertsAreVisible(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def ownUpdatesAreVisible(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def storesLowerCaseIdentifiers(self) -> bool: ...
    def storesLowerCaseQuotedIdentifiers(self) -> bool: ...
    def storesMixedCaseIdentifiers(self) -> bool: ...
    def storesMixedCaseQuotedIdentifiers(self) -> bool: ...
    def storesUpperCaseIdentifiers(self) -> bool: ...
    def storesUpperCaseQuotedIdentifiers(self) -> bool: ...
    def supportsANSI92EntryLevelSQL(self) -> bool: ...
    def supportsANSI92FullSQL(self) -> bool: ...
    def supportsANSI92IntermediateSQL(self) -> bool: ...
    def supportsAlterTableWithAddColumn(self) -> bool: ...
    def supportsAlterTableWithDropColumn(self) -> bool: ...
    def supportsBatchUpdates(self) -> bool: ...
    def supportsCatalogsInDataManipulation(self) -> bool: ...
    def supportsCatalogsInIndexDefinitions(self) -> bool: ...
    def supportsCatalogsInPrivilegeDefinitions(self) -> bool: ...
    def supportsCatalogsInProcedureCalls(self) -> bool: ...
    def supportsCatalogsInTableDefinitions(self) -> bool: ...
    def supportsColumnAliasing(self) -> bool: ...
    @typing.overload
    def supportsConvert(self) -> bool: ...
    @typing.overload
    def supportsConvert(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> bool: ...
    def supportsCoreSQLGrammar(self) -> bool: ...
    def supportsCorrelatedSubqueries(self) -> bool: ...
    def supportsDataDefinitionAndDataManipulationTransactions(self) -> bool: ...
    def supportsDataManipulationTransactionsOnly(self) -> bool: ...
    def supportsDifferentTableCorrelationNames(self) -> bool: ...
    def supportsExpressionsInOrderBy(self) -> bool: ...
    def supportsExtendedSQLGrammar(self) -> bool: ...
    def supportsFullOuterJoins(self) -> bool: ...
    def supportsGetGeneratedKeys(self) -> bool: ...
    def supportsGroupBy(self) -> bool: ...
    def supportsGroupByBeyondSelect(self) -> bool: ...
    def supportsGroupByUnrelated(self) -> bool: ...
    def supportsIntegrityEnhancementFacility(self) -> bool: ...
    def supportsLikeEscapeClause(self) -> bool: ...
    def supportsLimitedOuterJoins(self) -> bool: ...
    def supportsMinimumSQLGrammar(self) -> bool: ...
    def supportsMixedCaseIdentifiers(self) -> bool: ...
    def supportsMixedCaseQuotedIdentifiers(self) -> bool: ...
    def supportsMultipleOpenResults(self) -> bool: ...
    def supportsMultipleResultSets(self) -> bool: ...
    def supportsMultipleTransactions(self) -> bool: ...
    def supportsNamedParameters(self) -> bool: ...
    def supportsNonNullableColumns(self) -> bool: ...
    def supportsOpenCursorsAcrossCommit(self) -> bool: ...
    def supportsOpenCursorsAcrossRollback(self) -> bool: ...
    def supportsOpenStatementsAcrossCommit(self) -> bool: ...
    def supportsOpenStatementsAcrossRollback(self) -> bool: ...
    def supportsOrderByUnrelated(self) -> bool: ...
    def supportsOuterJoins(self) -> bool: ...
    def supportsPositionedDelete(self) -> bool: ...
    def supportsPositionedUpdate(self) -> bool: ...
    def supportsResultSetConcurrency(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> bool: ...
    def supportsResultSetHoldability(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def supportsResultSetType(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def supportsSavepoints(self) -> bool: ...
    def supportsSchemasInDataManipulation(self) -> bool: ...
    def supportsSchemasInIndexDefinitions(self) -> bool: ...
    def supportsSchemasInPrivilegeDefinitions(self) -> bool: ...
    def supportsSchemasInProcedureCalls(self) -> bool: ...
    def supportsSchemasInTableDefinitions(self) -> bool: ...
    def supportsSelectForUpdate(self) -> bool: ...
    def supportsStatementPooling(self) -> bool: ...
    def supportsStoredFunctionsUsingCallSyntax(self) -> bool: ...
    def supportsStoredProcedures(self) -> bool: ...
    def supportsSubqueriesInComparisons(self) -> bool: ...
    def supportsSubqueriesInExists(self) -> bool: ...
    def supportsSubqueriesInIns(self) -> bool: ...
    def supportsSubqueriesInQuantifieds(self) -> bool: ...
    def supportsTableCorrelationNames(self) -> bool: ...
    def supportsTransactionIsolationLevel(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def supportsTransactions(self) -> bool: ...
    def supportsUnion(self) -> bool: ...
    def supportsUnionAll(self) -> bool: ...
    def updatesAreDetected(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def usesLocalFilePerTable(self) -> bool: ...
    def usesLocalFiles(self) -> bool: ...

class Date(java.util.Date):
    @typing.overload
    def __init__(self, date: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def __init__(self, year: int | java.jint | java.lang.Integer, month: int | java.jint | java.lang.Integer, day: int | java.jint | java.lang.Integer, /) -> None: ...
    def getHours(self) -> int: ...
    def getMinutes(self) -> int: ...
    def getSeconds(self) -> int: ...
    def setHours(self, i: int | java.jint | java.lang.Integer, /) -> None: ...
    def setMinutes(self, i: int | java.jint | java.lang.Integer, /) -> None: ...
    def setSeconds(self, i: int | java.jint | java.lang.Integer, /) -> None: ...
    def setTime(self, date: int | java.jlong | java.lang.Long, /) -> None: ...
    def toString(self) -> str: ...
    @staticmethod
    def valueOf(s: str | java.lang.String, /) -> Date: ...

class Driver(java.lang.Object):
    def acceptsURL(self, arg1: str | java.lang.String, /) -> bool: ...
    def connect(self, arg1: str | java.lang.String, arg2: java.util.Properties, /) -> Connection: ...
    def getMajorVersion(self) -> int: ...
    def getMinorVersion(self) -> int: ...
    def getPropertyInfo(self, arg1: str | java.lang.String, arg2: java.util.Properties, /) -> java.chaquopy.JavaArray[DriverPropertyInfo]: ...
    def jdbcCompliant(self) -> bool: ...

class DriverManager(java.lang.Object):
    @staticmethod
    def deregisterDriver(driver: Driver, /) -> None: ...
    @typing.overload
    @staticmethod
    def getConnection(url: str | java.lang.String, /) -> Connection: ...
    @typing.overload
    @staticmethod
    def getConnection(url: str | java.lang.String, info: java.util.Properties, /) -> Connection: ...
    @typing.overload
    @staticmethod
    def getConnection(url: str | java.lang.String, user: str | java.lang.String, password: str | java.lang.String, /) -> Connection: ...
    @staticmethod
    def getDriver(url: str | java.lang.String, /) -> Driver: ...
    @staticmethod
    def getDrivers() -> java.util.Enumeration[Driver]: ...
    @staticmethod
    def getLogStream() -> java.io.PrintStream: ...
    @staticmethod
    def getLogWriter() -> java.io.PrintWriter: ...
    @staticmethod
    def getLoginTimeout() -> int: ...
    @staticmethod
    def println(message: str | java.lang.String, /) -> None: ...
    @staticmethod
    def registerDriver(driver: Driver, /) -> None: ...
    @staticmethod
    def setLogStream(out: java.io.PrintStream, /) -> None: ...
    @staticmethod
    def setLogWriter(out: java.io.PrintWriter, /) -> None: ...
    @staticmethod
    def setLoginTimeout(seconds: int | java.jint | java.lang.Integer, /) -> None: ...

class DriverPropertyInfo(java.lang.Object):
    choices: java.chaquopy.JavaArray[java.lang.String] = ...
    description: str = ...
    name: str = ...
    required: bool = ...
    value: str = ...
    def __init__(self, name: str | java.lang.String, value: str | java.lang.String, /) -> None: ...

class NClob(Clob): ...

class ParameterMetaData(Wrapper):
    parameterModeIn: typing.ClassVar[int] = ...
    parameterModeInOut: typing.ClassVar[int] = ...
    parameterModeOut: typing.ClassVar[int] = ...
    parameterModeUnknown: typing.ClassVar[int] = ...
    parameterNoNulls: typing.ClassVar[int] = ...
    parameterNullable: typing.ClassVar[int] = ...
    parameterNullableUnknown: typing.ClassVar[int] = ...
    def getParameterClassName(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    def getParameterCount(self) -> int: ...
    def getParameterMode(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getParameterType(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getParameterTypeName(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    def getPrecision(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getScale(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def isNullable(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def isSigned(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...

class PreparedStatement(Statement):
    def addBatch(self) -> None: ...
    def clearParameters(self) -> None: ...
    def execute(self) -> bool: ...
    def executeQuery(self) -> ResultSet: ...
    def executeUpdate(self) -> int: ...
    def getMetaData(self) -> ResultSetMetaData: ...
    def getParameterMetaData(self) -> ParameterMetaData: ...
    def setArray(self, arg1: int | java.jint | java.lang.Integer, arg2: Array, /) -> None: ...
    @typing.overload
    def setAsciiStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def setAsciiStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setAsciiStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    def setBigDecimal(self, arg1: int | java.jint | java.lang.Integer, arg2: java.math.BigDecimal, /) -> None: ...
    @typing.overload
    def setBinaryStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def setBinaryStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setBinaryStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setBlob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def setBlob(self, arg1: int | java.jint | java.lang.Integer, arg2: Blob, /) -> None: ...
    @typing.overload
    def setBlob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    def setBoolean(self, arg1: int | java.jint | java.lang.Integer, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setByte(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jbyte | java.lang.Byte, /) -> None: ...
    def setBytes(self, arg1: int | java.jint | java.lang.Integer, arg2: java.chaquopy.JavaArrayJByte, /) -> None: ...
    @typing.overload
    def setCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setClob(self, arg1: int | java.jint | java.lang.Integer, arg2: Clob, /) -> None: ...
    @typing.overload
    def setClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setDate(self, arg1: int | java.jint | java.lang.Integer, arg2: Date, /) -> None: ...
    @typing.overload
    def setDate(self, arg1: int | java.jint | java.lang.Integer, arg2: Date, arg3: java.util.Calendar, /) -> None: ...
    def setDouble(self, arg1: int | java.jint | java.lang.Integer, arg2: float | java.jdouble | java.lang.Double, /) -> None: ...
    def setFloat(self, arg1: int | java.jint | java.lang.Integer, arg2: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setInt(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    def setLong(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setNCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setNCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setNClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def setNClob(self, arg1: int | java.jint | java.lang.Integer, arg2: NClob, /) -> None: ...
    @typing.overload
    def setNClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    def setNString(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setNull(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setNull(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, arg3: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setObject(self, arg1: int | java.jint | java.lang.Integer, arg2: java.lang.Object | int | bool | float | str, /) -> None: ...
    @typing.overload
    def setObject(self, arg1: int | java.jint | java.lang.Integer, arg2: java.lang.Object | int | bool | float | str, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def setObject(self, arg1: int | java.jint | java.lang.Integer, arg2: java.lang.Object | int | bool | float | str, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jint | java.lang.Integer, /) -> None: ...
    def setRef(self, arg1: int | java.jint | java.lang.Integer, arg2: Ref, /) -> None: ...
    def setRowId(self, arg1: int | java.jint | java.lang.Integer, arg2: RowId, /) -> None: ...
    def setSQLXML(self, arg1: int | java.jint | java.lang.Integer, arg2: SQLXML, /) -> None: ...
    def setShort(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jshort | java.lang.Short, /) -> None: ...
    def setString(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setTime(self, arg1: int | java.jint | java.lang.Integer, arg2: Time, /) -> None: ...
    @typing.overload
    def setTime(self, arg1: int | java.jint | java.lang.Integer, arg2: Time, arg3: java.util.Calendar, /) -> None: ...
    @typing.overload
    def setTimestamp(self, arg1: int | java.jint | java.lang.Integer, arg2: Timestamp, /) -> None: ...
    @typing.overload
    def setTimestamp(self, arg1: int | java.jint | java.lang.Integer, arg2: Timestamp, arg3: java.util.Calendar, /) -> None: ...
    def setURL(self, arg1: int | java.jint | java.lang.Integer, arg2: java.net.URL, /) -> None: ...
    def setUnicodeStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...

class Ref(java.lang.Object):
    def getBaseTypeName(self) -> str: ...
    @typing.overload
    def getObject(self) -> java.lang.Object: ...
    @typing.overload
    def getObject(self, arg1: java.util.Map[java.lang.String, typing.Type[java.lang.Object]], /) -> java.lang.Object: ...
    def setObject(self, arg1: java.lang.Object | int | bool | float | str, /) -> None: ...

class ResultSet(Wrapper, java.lang.AutoCloseable):
    CLOSE_CURSORS_AT_COMMIT: typing.ClassVar[int] = ...
    CONCUR_READ_ONLY: typing.ClassVar[int] = ...
    CONCUR_UPDATABLE: typing.ClassVar[int] = ...
    FETCH_FORWARD: typing.ClassVar[int] = ...
    FETCH_REVERSE: typing.ClassVar[int] = ...
    FETCH_UNKNOWN: typing.ClassVar[int] = ...
    HOLD_CURSORS_OVER_COMMIT: typing.ClassVar[int] = ...
    TYPE_FORWARD_ONLY: typing.ClassVar[int] = ...
    TYPE_SCROLL_INSENSITIVE: typing.ClassVar[int] = ...
    TYPE_SCROLL_SENSITIVE: typing.ClassVar[int] = ...
    def absolute(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def afterLast(self) -> None: ...
    def beforeFirst(self) -> None: ...
    def cancelRowUpdates(self) -> None: ...
    def clearWarnings(self) -> None: ...
    def close(self) -> None: ...
    def deleteRow(self) -> None: ...
    def findColumn(self, arg1: str | java.lang.String, /) -> int: ...
    def first(self) -> bool: ...
    @typing.overload
    def getArray(self, arg1: int | java.jint | java.lang.Integer, /) -> Array: ...
    @typing.overload
    def getArray(self, arg1: str | java.lang.String, /) -> Array: ...
    @typing.overload
    def getAsciiStream(self, arg1: int | java.jint | java.lang.Integer, /) -> java.io.InputStream: ...
    @typing.overload
    def getAsciiStream(self, arg1: str | java.lang.String, /) -> java.io.InputStream: ...
    @typing.overload
    def getBigDecimal(self, arg1: int | java.jint | java.lang.Integer, /) -> java.math.BigDecimal: ...
    @typing.overload
    def getBigDecimal(self, arg1: str | java.lang.String, /) -> java.math.BigDecimal: ...
    @typing.overload
    def getBigDecimal(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> java.math.BigDecimal: ...
    @typing.overload
    def getBigDecimal(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> java.math.BigDecimal: ...
    @typing.overload
    def getBinaryStream(self, arg1: int | java.jint | java.lang.Integer, /) -> java.io.InputStream: ...
    @typing.overload
    def getBinaryStream(self, arg1: str | java.lang.String, /) -> java.io.InputStream: ...
    @typing.overload
    def getBlob(self, arg1: int | java.jint | java.lang.Integer, /) -> Blob: ...
    @typing.overload
    def getBlob(self, arg1: str | java.lang.String, /) -> Blob: ...
    @typing.overload
    def getBoolean(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    @typing.overload
    def getBoolean(self, arg1: str | java.lang.String, /) -> bool: ...
    @typing.overload
    def getByte(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    @typing.overload
    def getByte(self, arg1: str | java.lang.String, /) -> int: ...
    @typing.overload
    def getBytes(self, arg1: int | java.jint | java.lang.Integer, /) -> java.chaquopy.JavaArrayJByte: ...
    @typing.overload
    def getBytes(self, arg1: str | java.lang.String, /) -> java.chaquopy.JavaArrayJByte: ...
    @typing.overload
    def getCharacterStream(self, arg1: int | java.jint | java.lang.Integer, /) -> java.io.Reader: ...
    @typing.overload
    def getCharacterStream(self, arg1: str | java.lang.String, /) -> java.io.Reader: ...
    @typing.overload
    def getClob(self, arg1: int | java.jint | java.lang.Integer, /) -> Clob: ...
    @typing.overload
    def getClob(self, arg1: str | java.lang.String, /) -> Clob: ...
    def getConcurrency(self) -> int: ...
    def getCursorName(self) -> str: ...
    @typing.overload
    def getDate(self, arg1: int | java.jint | java.lang.Integer, /) -> Date: ...
    @typing.overload
    def getDate(self, arg1: str | java.lang.String, /) -> Date: ...
    @typing.overload
    def getDate(self, arg1: int | java.jint | java.lang.Integer, arg2: java.util.Calendar, /) -> Date: ...
    @typing.overload
    def getDate(self, arg1: str | java.lang.String, arg2: java.util.Calendar, /) -> Date: ...
    @typing.overload
    def getDouble(self, arg1: int | java.jint | java.lang.Integer, /) -> float: ...
    @typing.overload
    def getDouble(self, arg1: str | java.lang.String, /) -> float: ...
    def getFetchDirection(self) -> int: ...
    def getFetchSize(self) -> int: ...
    @typing.overload
    def getFloat(self, arg1: int | java.jint | java.lang.Integer, /) -> float: ...
    @typing.overload
    def getFloat(self, arg1: str | java.lang.String, /) -> float: ...
    def getHoldability(self) -> int: ...
    @typing.overload
    def getInt(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    @typing.overload
    def getInt(self, arg1: str | java.lang.String, /) -> int: ...
    @typing.overload
    def getLong(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    @typing.overload
    def getLong(self, arg1: str | java.lang.String, /) -> int: ...
    def getMetaData(self) -> ResultSetMetaData: ...
    @typing.overload
    def getNCharacterStream(self, arg1: int | java.jint | java.lang.Integer, /) -> java.io.Reader: ...
    @typing.overload
    def getNCharacterStream(self, arg1: str | java.lang.String, /) -> java.io.Reader: ...
    @typing.overload
    def getNClob(self, arg1: int | java.jint | java.lang.Integer, /) -> NClob: ...
    @typing.overload
    def getNClob(self, arg1: str | java.lang.String, /) -> NClob: ...
    @typing.overload
    def getNString(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    @typing.overload
    def getNString(self, arg1: str | java.lang.String, /) -> str: ...
    @typing.overload
    def getObject(self, arg1: int | java.jint | java.lang.Integer, /) -> java.lang.Object: ...
    @typing.overload
    def getObject(self, arg1: str | java.lang.String, /) -> java.lang.Object: ...
    @typing.overload
    def getObject(self, arg1: int | java.jint | java.lang.Integer, arg2: java.util.Map[java.lang.String, typing.Type[java.lang.Object]], /) -> java.lang.Object: ...
    @typing.overload
    def getObject(self, arg1: str | java.lang.String, arg2: java.util.Map[java.lang.String, typing.Type[java.lang.Object]], /) -> java.lang.Object: ...
    @typing.overload
    def getRef(self, arg1: int | java.jint | java.lang.Integer, /) -> Ref: ...
    @typing.overload
    def getRef(self, arg1: str | java.lang.String, /) -> Ref: ...
    def getRow(self) -> int: ...
    @typing.overload
    def getRowId(self, arg1: int | java.jint | java.lang.Integer, /) -> RowId: ...
    @typing.overload
    def getRowId(self, arg1: str | java.lang.String, /) -> RowId: ...
    @typing.overload
    def getSQLXML(self, arg1: int | java.jint | java.lang.Integer, /) -> SQLXML: ...
    @typing.overload
    def getSQLXML(self, arg1: str | java.lang.String, /) -> SQLXML: ...
    @typing.overload
    def getShort(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    @typing.overload
    def getShort(self, arg1: str | java.lang.String, /) -> int: ...
    def getStatement(self) -> Statement: ...
    @typing.overload
    def getString(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    @typing.overload
    def getString(self, arg1: str | java.lang.String, /) -> str: ...
    @typing.overload
    def getTime(self, arg1: int | java.jint | java.lang.Integer, /) -> Time: ...
    @typing.overload
    def getTime(self, arg1: str | java.lang.String, /) -> Time: ...
    @typing.overload
    def getTime(self, arg1: int | java.jint | java.lang.Integer, arg2: java.util.Calendar, /) -> Time: ...
    @typing.overload
    def getTime(self, arg1: str | java.lang.String, arg2: java.util.Calendar, /) -> Time: ...
    @typing.overload
    def getTimestamp(self, arg1: int | java.jint | java.lang.Integer, /) -> Timestamp: ...
    @typing.overload
    def getTimestamp(self, arg1: str | java.lang.String, /) -> Timestamp: ...
    @typing.overload
    def getTimestamp(self, arg1: int | java.jint | java.lang.Integer, arg2: java.util.Calendar, /) -> Timestamp: ...
    @typing.overload
    def getTimestamp(self, arg1: str | java.lang.String, arg2: java.util.Calendar, /) -> Timestamp: ...
    def getType(self) -> int: ...
    @typing.overload
    def getURL(self, arg1: int | java.jint | java.lang.Integer, /) -> java.net.URL: ...
    @typing.overload
    def getURL(self, arg1: str | java.lang.String, /) -> java.net.URL: ...
    @typing.overload
    def getUnicodeStream(self, arg1: int | java.jint | java.lang.Integer, /) -> java.io.InputStream: ...
    @typing.overload
    def getUnicodeStream(self, arg1: str | java.lang.String, /) -> java.io.InputStream: ...
    def getWarnings(self) -> SQLWarning: ...
    def insertRow(self) -> None: ...
    def isAfterLast(self) -> bool: ...
    def isBeforeFirst(self) -> bool: ...
    def isClosed(self) -> bool: ...
    def isFirst(self) -> bool: ...
    def isLast(self) -> bool: ...
    def last(self) -> bool: ...
    def moveToCurrentRow(self) -> None: ...
    def moveToInsertRow(self) -> None: ...
    def next(self) -> bool: ...
    def previous(self) -> bool: ...
    def refreshRow(self) -> None: ...
    def relative(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def rowDeleted(self) -> bool: ...
    def rowInserted(self) -> bool: ...
    def rowUpdated(self) -> bool: ...
    def setFetchDirection(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setFetchSize(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def updateArray(self, arg1: int | java.jint | java.lang.Integer, arg2: Array, /) -> None: ...
    @typing.overload
    def updateArray(self, arg1: str | java.lang.String, arg2: Array, /) -> None: ...
    @typing.overload
    def updateAsciiStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def updateAsciiStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def updateAsciiStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def updateAsciiStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateAsciiStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def updateAsciiStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateBigDecimal(self, arg1: int | java.jint | java.lang.Integer, arg2: java.math.BigDecimal, /) -> None: ...
    @typing.overload
    def updateBigDecimal(self, arg1: str | java.lang.String, arg2: java.math.BigDecimal, /) -> None: ...
    @typing.overload
    def updateBinaryStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def updateBinaryStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def updateBinaryStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def updateBinaryStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateBinaryStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def updateBinaryStream(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateBlob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def updateBlob(self, arg1: int | java.jint | java.lang.Integer, arg2: Blob, /) -> None: ...
    @typing.overload
    def updateBlob(self, arg1: str | java.lang.String, arg2: java.io.InputStream, /) -> None: ...
    @typing.overload
    def updateBlob(self, arg1: str | java.lang.String, arg2: Blob, /) -> None: ...
    @typing.overload
    def updateBlob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateBlob(self, arg1: str | java.lang.String, arg2: java.io.InputStream, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateBoolean(self, arg1: int | java.jint | java.lang.Integer, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def updateBoolean(self, arg1: str | java.lang.String, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def updateByte(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jbyte | java.lang.Byte, /) -> None: ...
    @typing.overload
    def updateByte(self, arg1: str | java.lang.String, arg2: int | java.jbyte | java.lang.Byte, /) -> None: ...
    @typing.overload
    def updateBytes(self, arg1: int | java.jint | java.lang.Integer, arg2: java.chaquopy.JavaArrayJByte, /) -> None: ...
    @typing.overload
    def updateBytes(self, arg1: str | java.lang.String, arg2: java.chaquopy.JavaArrayJByte, /) -> None: ...
    @typing.overload
    def updateCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def updateCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def updateCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def updateCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def updateCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def updateClob(self, arg1: int | java.jint | java.lang.Integer, arg2: Clob, /) -> None: ...
    @typing.overload
    def updateClob(self, arg1: str | java.lang.String, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def updateClob(self, arg1: str | java.lang.String, arg2: Clob, /) -> None: ...
    @typing.overload
    def updateClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateClob(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateDate(self, arg1: int | java.jint | java.lang.Integer, arg2: Date, /) -> None: ...
    @typing.overload
    def updateDate(self, arg1: str | java.lang.String, arg2: Date, /) -> None: ...
    @typing.overload
    def updateDouble(self, arg1: int | java.jint | java.lang.Integer, arg2: float | java.jdouble | java.lang.Double, /) -> None: ...
    @typing.overload
    def updateDouble(self, arg1: str | java.lang.String, arg2: float | java.jdouble | java.lang.Double, /) -> None: ...
    @typing.overload
    def updateFloat(self, arg1: int | java.jint | java.lang.Integer, arg2: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def updateFloat(self, arg1: str | java.lang.String, arg2: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def updateInt(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def updateInt(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def updateLong(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateLong(self, arg1: str | java.lang.String, arg2: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateNCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def updateNCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def updateNCharacterStream(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateNCharacterStream(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateNClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def updateNClob(self, arg1: int | java.jint | java.lang.Integer, arg2: NClob, /) -> None: ...
    @typing.overload
    def updateNClob(self, arg1: str | java.lang.String, arg2: java.io.Reader, /) -> None: ...
    @typing.overload
    def updateNClob(self, arg1: str | java.lang.String, arg2: NClob, /) -> None: ...
    @typing.overload
    def updateNClob(self, arg1: int | java.jint | java.lang.Integer, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateNClob(self, arg1: str | java.lang.String, arg2: java.io.Reader, arg3: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def updateNString(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def updateNString(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def updateNull(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def updateNull(self, arg1: str | java.lang.String, /) -> None: ...
    @typing.overload
    def updateObject(self, arg1: int | java.jint | java.lang.Integer, arg2: java.lang.Object | int | bool | float | str, /) -> None: ...
    @typing.overload
    def updateObject(self, arg1: str | java.lang.String, arg2: java.lang.Object | int | bool | float | str, /) -> None: ...
    @typing.overload
    def updateObject(self, arg1: int | java.jint | java.lang.Integer, arg2: java.lang.Object | int | bool | float | str, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def updateObject(self, arg1: str | java.lang.String, arg2: java.lang.Object | int | bool | float | str, arg3: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def updateRef(self, arg1: int | java.jint | java.lang.Integer, arg2: Ref, /) -> None: ...
    @typing.overload
    def updateRef(self, arg1: str | java.lang.String, arg2: Ref, /) -> None: ...
    def updateRow(self) -> None: ...
    @typing.overload
    def updateRowId(self, arg1: int | java.jint | java.lang.Integer, arg2: RowId, /) -> None: ...
    @typing.overload
    def updateRowId(self, arg1: str | java.lang.String, arg2: RowId, /) -> None: ...
    @typing.overload
    def updateSQLXML(self, arg1: int | java.jint | java.lang.Integer, arg2: SQLXML, /) -> None: ...
    @typing.overload
    def updateSQLXML(self, arg1: str | java.lang.String, arg2: SQLXML, /) -> None: ...
    @typing.overload
    def updateShort(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jshort | java.lang.Short, /) -> None: ...
    @typing.overload
    def updateShort(self, arg1: str | java.lang.String, arg2: int | java.jshort | java.lang.Short, /) -> None: ...
    @typing.overload
    def updateString(self, arg1: int | java.jint | java.lang.Integer, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def updateString(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def updateTime(self, arg1: int | java.jint | java.lang.Integer, arg2: Time, /) -> None: ...
    @typing.overload
    def updateTime(self, arg1: str | java.lang.String, arg2: Time, /) -> None: ...
    @typing.overload
    def updateTimestamp(self, arg1: int | java.jint | java.lang.Integer, arg2: Timestamp, /) -> None: ...
    @typing.overload
    def updateTimestamp(self, arg1: str | java.lang.String, arg2: Timestamp, /) -> None: ...
    def wasNull(self) -> bool: ...

class ResultSetMetaData(Wrapper):
    columnNoNulls: typing.ClassVar[int] = ...
    columnNullable: typing.ClassVar[int] = ...
    columnNullableUnknown: typing.ClassVar[int] = ...
    def getCatalogName(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    def getColumnClassName(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    def getColumnCount(self) -> int: ...
    def getColumnDisplaySize(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getColumnLabel(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    def getColumnName(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    def getColumnType(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getColumnTypeName(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    def getPrecision(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getScale(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def getSchemaName(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    def getTableName(self, arg1: int | java.jint | java.lang.Integer, /) -> str: ...
    def isAutoIncrement(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isCaseSensitive(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isCurrency(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isDefinitelyWritable(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isNullable(self, arg1: int | java.jint | java.lang.Integer, /) -> int: ...
    def isReadOnly(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isSearchable(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isSigned(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def isWritable(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...

class RowId(java.lang.Object):
    def equals(self, arg1: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getBytes(self) -> java.chaquopy.JavaArrayJByte: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...

class RowIdLifetime(java.lang.Enum[RowIdLifetime]):
    ROWID_UNSUPPORTED: typing.ClassVar[RowIdLifetime] = ...
    ROWID_VALID_FOREVER: typing.ClassVar[RowIdLifetime] = ...
    ROWID_VALID_OTHER: typing.ClassVar[RowIdLifetime] = ...
    ROWID_VALID_SESSION: typing.ClassVar[RowIdLifetime] = ...
    ROWID_VALID_TRANSACTION: typing.ClassVar[RowIdLifetime] = ...
    @staticmethod
    def valueOf(name: str | java.lang.String, /) -> RowIdLifetime: ...
    @staticmethod
    def values() -> java.chaquopy.JavaArray[RowIdLifetime]: ...

class SQLClientInfoException(SQLException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, failedProperties: java.util.Map[java.lang.String, ClientInfoStatus], /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, failedProperties: java.util.Map[java.lang.String, ClientInfoStatus], /) -> None: ...
    @typing.overload
    def __init__(self, failedProperties: java.util.Map[java.lang.String, ClientInfoStatus], cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, failedProperties: java.util.Map[java.lang.String, ClientInfoStatus], /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, failedProperties: java.util.Map[java.lang.String, ClientInfoStatus], cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, failedProperties: java.util.Map[java.lang.String, ClientInfoStatus], /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, failedProperties: java.util.Map[java.lang.String, ClientInfoStatus], cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, failedProperties: java.util.Map[java.lang.String, ClientInfoStatus], cause: java.lang.Throwable, /) -> None: ...
    def getFailedProperties(self) -> java.util.Map[java.lang.String, ClientInfoStatus]: ...

class SQLData(java.lang.Object):
    def getSQLTypeName(self) -> str: ...
    def readSQL(self, arg1: SQLInput, arg2: str | java.lang.String, /) -> None: ...
    def writeSQL(self, arg1: SQLOutput, /) -> None: ...

class SQLDataException(SQLNonTransientException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...

class SQLException(java.lang.Exception, java.lang.Iterable[java.lang.Throwable]):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, sqlState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, sqlState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...
    def getErrorCode(self) -> int: ...
    def getNextException(self) -> SQLException: ...
    def getSQLState(self) -> str: ...
    def iterator(self) -> java.util.Iterator[java.lang.Throwable]: ...
    def setNextException(self, ex: SQLException, /) -> None: ...

class SQLFeatureNotSupportedException(SQLNonTransientException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...

class SQLInput(java.lang.Object):
    def readArray(self) -> Array: ...
    def readAsciiStream(self) -> java.io.InputStream: ...
    def readBigDecimal(self) -> java.math.BigDecimal: ...
    def readBinaryStream(self) -> java.io.InputStream: ...
    def readBlob(self) -> Blob: ...
    def readBoolean(self) -> bool: ...
    def readByte(self) -> int: ...
    def readBytes(self) -> java.chaquopy.JavaArrayJByte: ...
    def readCharacterStream(self) -> java.io.Reader: ...
    def readClob(self) -> Clob: ...
    def readDate(self) -> Date: ...
    def readDouble(self) -> float: ...
    def readFloat(self) -> float: ...
    def readInt(self) -> int: ...
    def readLong(self) -> int: ...
    def readNClob(self) -> NClob: ...
    def readNString(self) -> str: ...
    def readObject(self) -> java.lang.Object: ...
    def readRef(self) -> Ref: ...
    def readRowId(self) -> RowId: ...
    def readSQLXML(self) -> SQLXML: ...
    def readShort(self) -> int: ...
    def readString(self) -> str: ...
    def readTime(self) -> Time: ...
    def readTimestamp(self) -> Timestamp: ...
    def readURL(self) -> java.net.URL: ...
    def wasNull(self) -> bool: ...

class SQLIntegrityConstraintViolationException(SQLNonTransientException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...

class SQLInvalidAuthorizationSpecException(SQLNonTransientException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...

class SQLNonTransientConnectionException(SQLNonTransientException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...

class SQLNonTransientException(SQLException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...

class SQLOutput(java.lang.Object):
    def writeArray(self, arg1: Array, /) -> None: ...
    def writeAsciiStream(self, arg1: java.io.InputStream, /) -> None: ...
    def writeBigDecimal(self, arg1: java.math.BigDecimal, /) -> None: ...
    def writeBinaryStream(self, arg1: java.io.InputStream, /) -> None: ...
    def writeBlob(self, arg1: Blob, /) -> None: ...
    def writeBoolean(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def writeByte(self, arg1: int | java.jbyte | java.lang.Byte, /) -> None: ...
    def writeBytes(self, arg1: java.chaquopy.JavaArrayJByte, /) -> None: ...
    def writeCharacterStream(self, arg1: java.io.Reader, /) -> None: ...
    def writeClob(self, arg1: Clob, /) -> None: ...
    def writeDate(self, arg1: Date, /) -> None: ...
    def writeDouble(self, arg1: float | java.jdouble | java.lang.Double, /) -> None: ...
    def writeFloat(self, arg1: float | java.jfloat | java.lang.Float, /) -> None: ...
    def writeInt(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def writeLong(self, arg1: int | java.jlong | java.lang.Long, /) -> None: ...
    def writeNClob(self, arg1: NClob, /) -> None: ...
    def writeNString(self, arg1: str | java.lang.String, /) -> None: ...
    def writeObject(self, arg1: SQLData, /) -> None: ...
    def writeRef(self, arg1: Ref, /) -> None: ...
    def writeRowId(self, arg1: RowId, /) -> None: ...
    def writeSQLXML(self, arg1: SQLXML, /) -> None: ...
    def writeShort(self, arg1: int | java.jshort | java.lang.Short, /) -> None: ...
    def writeString(self, arg1: str | java.lang.String, /) -> None: ...
    def writeStruct(self, arg1: Struct, /) -> None: ...
    def writeTime(self, arg1: Time, /) -> None: ...
    def writeTimestamp(self, arg1: Timestamp, /) -> None: ...
    def writeURL(self, arg1: java.net.URL, /) -> None: ...

class SQLPermission(java.security.BasicPermission):
    @typing.overload
    def __init__(self, name: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, name: str | java.lang.String, actions: str | java.lang.String, /) -> None: ...

class SQLRecoverableException(SQLException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...

class SQLSyntaxErrorException(SQLNonTransientException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...

class SQLTimeoutException(SQLTransientException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...

class SQLTransactionRollbackException(SQLTransientException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...

class SQLTransientConnectionException(SQLTransientException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...

class SQLTransientException(SQLException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...

class SQLWarning(SQLException):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, cause: java.lang.Throwable, /) -> None: ...
    @typing.overload
    def __init__(self, reason: str | java.lang.String, SQLState: str | java.lang.String, vendorCode: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...
    def getNextWarning(self) -> SQLWarning: ...
    def setNextWarning(self, w: SQLWarning, /) -> None: ...

class SQLXML(java.lang.Object):
    def free(self) -> None: ...
    def getBinaryStream(self) -> java.io.InputStream: ...
    def getCharacterStream(self) -> java.io.Reader: ...
    _getSource__T = typing.TypeVar('_getSource__T')  # <T>
    def getSource(self, arg1: typing.Type[_getSource__T], /) -> _getSource__T: ...
    def getString(self) -> str: ...
    def setBinaryStream(self) -> java.io.OutputStream: ...
    def setCharacterStream(self) -> java.io.Writer: ...
    _setResult__T = typing.TypeVar('_setResult__T')  # <T>
    def setResult(self, arg1: typing.Type[_setResult__T], /) -> _setResult__T: ...
    def setString(self, arg1: str | java.lang.String, /) -> None: ...

class Savepoint(java.lang.Object):
    def getSavepointId(self) -> int: ...
    def getSavepointName(self) -> str: ...

class Statement(Wrapper, java.lang.AutoCloseable):
    CLOSE_ALL_RESULTS: typing.ClassVar[int] = ...
    CLOSE_CURRENT_RESULT: typing.ClassVar[int] = ...
    EXECUTE_FAILED: typing.ClassVar[int] = ...
    KEEP_CURRENT_RESULT: typing.ClassVar[int] = ...
    NO_GENERATED_KEYS: typing.ClassVar[int] = ...
    RETURN_GENERATED_KEYS: typing.ClassVar[int] = ...
    SUCCESS_NO_INFO: typing.ClassVar[int] = ...
    def addBatch(self, arg1: str | java.lang.String, /) -> None: ...
    def cancel(self) -> None: ...
    def clearBatch(self) -> None: ...
    def clearWarnings(self) -> None: ...
    def close(self) -> None: ...
    @typing.overload
    def execute(self, arg1: str | java.lang.String, /) -> bool: ...
    @typing.overload
    def execute(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> bool: ...
    @typing.overload
    def execute(self, arg1: str | java.lang.String, arg2: java.chaquopy.JavaArrayJInt, /) -> bool: ...
    @typing.overload
    def execute(self, arg1: str | java.lang.String, arg2: java.chaquopy.JavaArray[java.lang.String], /) -> bool: ...
    def executeBatch(self) -> java.chaquopy.JavaArrayJInt: ...
    def executeQuery(self, arg1: str | java.lang.String, /) -> ResultSet: ...
    @typing.overload
    def executeUpdate(self, arg1: str | java.lang.String, /) -> int: ...
    @typing.overload
    def executeUpdate(self, arg1: str | java.lang.String, arg2: int | java.jint | java.lang.Integer, /) -> int: ...
    @typing.overload
    def executeUpdate(self, arg1: str | java.lang.String, arg2: java.chaquopy.JavaArrayJInt, /) -> int: ...
    @typing.overload
    def executeUpdate(self, arg1: str | java.lang.String, arg2: java.chaquopy.JavaArray[java.lang.String], /) -> int: ...
    def getConnection(self) -> Connection: ...
    def getFetchDirection(self) -> int: ...
    def getFetchSize(self) -> int: ...
    def getGeneratedKeys(self) -> ResultSet: ...
    def getMaxFieldSize(self) -> int: ...
    def getMaxRows(self) -> int: ...
    @typing.overload
    def getMoreResults(self) -> bool: ...
    @typing.overload
    def getMoreResults(self, arg1: int | java.jint | java.lang.Integer, /) -> bool: ...
    def getQueryTimeout(self) -> int: ...
    def getResultSet(self) -> ResultSet: ...
    def getResultSetConcurrency(self) -> int: ...
    def getResultSetHoldability(self) -> int: ...
    def getResultSetType(self) -> int: ...
    def getUpdateCount(self) -> int: ...
    def getWarnings(self) -> SQLWarning: ...
    def isClosed(self) -> bool: ...
    def isPoolable(self) -> bool: ...
    def setCursorName(self, arg1: str | java.lang.String, /) -> None: ...
    def setEscapeProcessing(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setFetchDirection(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setFetchSize(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setMaxFieldSize(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setMaxRows(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setPoolable(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setQueryTimeout(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...

class Struct(java.lang.Object):
    @typing.overload
    def getAttributes(self) -> java.chaquopy.JavaArray[java.lang.Object]: ...
    @typing.overload
    def getAttributes(self, arg1: java.util.Map[java.lang.String, typing.Type[java.lang.Object]], /) -> java.chaquopy.JavaArray[java.lang.Object]: ...
    def getSQLTypeName(self) -> str: ...

class Time(java.util.Date):
    @typing.overload
    def __init__(self, time: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def __init__(self, hour: int | java.jint | java.lang.Integer, minute: int | java.jint | java.lang.Integer, second: int | java.jint | java.lang.Integer, /) -> None: ...
    def getDate(self) -> int: ...
    def getDay(self) -> int: ...
    def getMonth(self) -> int: ...
    def getYear(self) -> int: ...
    def setDate(self, i: int | java.jint | java.lang.Integer, /) -> None: ...
    def setMonth(self, i: int | java.jint | java.lang.Integer, /) -> None: ...
    def setTime(self, time: int | java.jlong | java.lang.Long, /) -> None: ...
    def setYear(self, i: int | java.jint | java.lang.Integer, /) -> None: ...
    def toString(self) -> str: ...
    @staticmethod
    def valueOf(s: str | java.lang.String, /) -> Time: ...

class Timestamp(java.util.Date):
    @typing.overload
    def __init__(self, time: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def __init__(self, year: int | java.jint | java.lang.Integer, month: int | java.jint | java.lang.Integer, date: int | java.jint | java.lang.Integer, hour: int | java.jint | java.lang.Integer, minute: int | java.jint | java.lang.Integer, second: int | java.jint | java.lang.Integer, nano: int | java.jint | java.lang.Integer, /) -> None: ...
    def after(self, ts: Timestamp, /) -> bool: ...
    def before(self, ts: Timestamp, /) -> bool: ...
    @typing.overload
    def compareTo(self, ts: Timestamp, /) -> int: ...
    @typing.overload
    def compareTo(self, o: java.util.Date, /) -> int: ...
    @typing.overload
    def equals(self, ts: java.lang.Object | int | bool | float | str, /) -> bool: ...
    @typing.overload
    def equals(self, ts: Timestamp, /) -> bool: ...
    def getNanos(self) -> int: ...
    def getTime(self) -> int: ...
    def hashCode(self) -> int: ...
    def setNanos(self, n: int | java.jint | java.lang.Integer, /) -> None: ...
    def setTime(self, time: int | java.jlong | java.lang.Long, /) -> None: ...
    def toString(self) -> str: ...
    @staticmethod
    def valueOf(s: str | java.lang.String, /) -> Timestamp: ...

class Types(java.lang.Object):
    ARRAY: typing.ClassVar[int] = ...
    BIGINT: typing.ClassVar[int] = ...
    BINARY: typing.ClassVar[int] = ...
    BIT: typing.ClassVar[int] = ...
    BLOB: typing.ClassVar[int] = ...
    BOOLEAN: typing.ClassVar[int] = ...
    CHAR: typing.ClassVar[int] = ...
    CLOB: typing.ClassVar[int] = ...
    DATALINK: typing.ClassVar[int] = ...
    DATE: typing.ClassVar[int] = ...
    DECIMAL: typing.ClassVar[int] = ...
    DISTINCT: typing.ClassVar[int] = ...
    DOUBLE: typing.ClassVar[int] = ...
    FLOAT: typing.ClassVar[int] = ...
    INTEGER: typing.ClassVar[int] = ...
    JAVA_OBJECT: typing.ClassVar[int] = ...
    LONGNVARCHAR: typing.ClassVar[int] = ...
    LONGVARBINARY: typing.ClassVar[int] = ...
    LONGVARCHAR: typing.ClassVar[int] = ...
    NCHAR: typing.ClassVar[int] = ...
    NCLOB: typing.ClassVar[int] = ...
    NULL: typing.ClassVar[int] = ...
    NUMERIC: typing.ClassVar[int] = ...
    NVARCHAR: typing.ClassVar[int] = ...
    OTHER: typing.ClassVar[int] = ...
    REAL: typing.ClassVar[int] = ...
    REF: typing.ClassVar[int] = ...
    ROWID: typing.ClassVar[int] = ...
    SMALLINT: typing.ClassVar[int] = ...
    SQLXML: typing.ClassVar[int] = ...
    STRUCT: typing.ClassVar[int] = ...
    TIME: typing.ClassVar[int] = ...
    TIMESTAMP: typing.ClassVar[int] = ...
    TINYINT: typing.ClassVar[int] = ...
    VARBINARY: typing.ClassVar[int] = ...
    VARCHAR: typing.ClassVar[int] = ...

class Wrapper(java.lang.Object):
    def isWrapperFor(self, arg1: typing.Type[java.lang.Object], /) -> bool: ...
    _unwrap__T = typing.TypeVar('_unwrap__T')  # <T>
    def unwrap(self, arg1: typing.Type[_unwrap__T], /) -> _unwrap__T: ...
