84 & ~CLIENT_SSL_VERIFY_SERVER_CERT);
94 public enum MysqlOption {
104 static class MysqlRegister :
Sql.ConnectionRegister {
106 if (drivername.
equals (
"mysql") ) {
115 if (Helper.init() ) {
116 Sql.Database.reigstry (
DRIVERNAME,
new MysqlRegister() );
127 if (bloaded ==
false) {
140 Pointer cdecl rs_create (Pointer);
236 public static class MysqlResultSet :
Sql.ResultSet {
240 hres = Helper.rs_create (r);
244 return Helper.rs_first (hres);
248 return Helper.rs_last (hres);
252 return Helper.rs_next (hres);
271 return Helper.rs_isLast (hres);
275 return Helper.rs_isValid (hres);
279 return Helper.rs_getValueI (hres, columnlabel);
283 return Helper.rs_getValueL (hres, columnlabel);
291 return Helper.rs_getValueD (hres, columnlabel);
295 return Helper.rs_getValueI (hres, columnlabel);
299 return Helper.rs_getValueI (hres, columnlabel) != 0;
303 return Helper.rs_getValue (hres, columnlabel);
306 public int getInt (
int columnIndex)
override {
307 return Helper.rs_getIValueI (hres, columnIndex);
310 public long getLong (
int columnIndex)
override {
311 return Helper.rs_getIValueL (hres, columnIndex);
315 return Helper.rs_getIValueD (hres, columnIndex);
322 public byte getByte (
int columnIndex)
override {
323 return Helper.rs_getIValueI (hres, columnIndex);
327 return Helper.rs_getIValueI (hres, columnIndex) != 0;
331 return Helper.rs_getIValue (hres, columnIndex);
350 return Helper.rs_getRowCount (hres);
360 Helper.rs_free (hres);
370 public static class MysqlStatement :
Sql.Statement {
378 if (0 != Helper.x_mysql_query (mysql.
_mysql, sql) ) {
383 return Helper.get_affected_rows_4x (mysql.
_mysql);
390 if (0 != Helper.x_mysql_query (mysql.
_mysql, sql) ) {
398 if (0 != Helper.x_mysql_query (mysql.
_mysql, sql) ) {
403 return Helper.get_affected_rows_4x (mysql.
_mysql);
410 long res = Helper.x_mysql_store_result (mysql.
_mysql);
413 return new MysqlResultSet (res);
420 return Helper.get_affected_rows_4x (mysql.
_mysql);
424 return Helper.get_lastinserted_id_4x (mysql.
_mysql);
434 public static class MysqlPreparedResultSet :
Sql.ResultSet {
441 field_count = Helper.store_statement_res_4x (r);
455 return Helper.next_statement_res_4x (hres);
479 return Helper.rs_isValid (hres);
483 return Helper.stmt_getValueI (hres, columnlabel);
487 return Helper.stmt_getValueL (hres, columnlabel);
495 return Helper.stmt_getValueD (hres, columnlabel);
499 return Helper.stmt_getValueI (hres, columnlabel);
503 return Helper.stmt_getValueI (hres, columnlabel) != 0;
507 return Helper.stmt_getValue (hres, columnlabel);
510 public int getInt (
int columnIndex)
override {
511 return Helper.stmt_getIValueI (hres, columnIndex);
514 public long getLong (
int columnIndex)
override {
515 return Helper.stmt_getIValueL (hres, columnIndex);
523 return Helper.stmt_getIValueD (hres, columnIndex);
526 public byte getByte (
int columnIndex)
override {
527 return Helper.stmt_getIValueI (hres, columnIndex);
531 return Helper.stmt_getIValueI (hres, columnIndex) != 0;
535 return Helper.stmt_getIValue (hres, columnIndex);
539 return Helper.stmt_find_column (hres, name);
543 return Helper.stmt_get_column (hres, i - 1);
551 return Helper.stmt_row_count (hres);
560 if (stmt != nilptr) {
567 if (
id > 0 &&
id < (field_count + 1) ) {
568 return Helper.stmt_column_type (hres,
id - 1);
581 public class MysqlPreparedStatement :
Sql.PreparedStatement {
589 hprepare_handle = Helper.create_statement_4x (m.
_mysql);
591 if (hprepare_handle != 0) {
592 argc = Helper.statement__prepare_4x (hprepare_handle, sql, sql.
length() );
599 if (0 != Helper.statement_execute_4x (hprepare_handle) ) {
604 return Helper.stmt_affected_rows_4x (hprepare_handle);
611 if (0 != Helper.statement_execute_4x (hprepare_handle) ) {
615 return new MysqlPreparedResultSet (
this, hprepare_handle);
619 if (0 != Helper.x_mysql_query (mysql.
_mysql, sql) ) {
624 return Helper.get_affected_rows_4x (mysql.
_mysql);
631 if (0 != Helper.x_mysql_query (mysql.
_mysql, sql) ) {
638 if (0 != Helper.statement_execute_4x (hprepare_handle) ) {
643 return Helper.stmt_affected_rows_4x (hprepare_handle);
649 if (0 != Helper.x_mysql_query (mysql.
_mysql, sql) ) {
654 return Helper.get_affected_rows_4x (mysql.
_mysql);
661 long res = Helper.x_mysql_store_result (mysql.
_mysql);
664 return new MysqlResultSet (res);
671 if (param_index < argc) {
672 if (value == nilptr) {
673 if (!Helper.bind_statement_param_4x (hprepare_handle, param_index++, value, 0, 0xf) ) {
674 throw new Sql.SqlException (-1, Helper.get_statement_error_4x (hprepare_handle) );
677 if (!Helper.bind_statement_param_4x (hprepare_handle, param_index++, value, value.
length(), 0) ) {
678 throw new Sql.SqlException (-1, Helper.get_statement_error_4x (hprepare_handle) );
687 if (param_index < argc) {
688 if (!Helper.bind_statement_param_4x (hprepare_handle, param_index++, value, 0, 1) ) {
689 throw new Sql.SqlException (-1, Helper.get_statement_error_4x (hprepare_handle) );
697 if (param_index < argc) {
698 if (!Helper.bind_statement_param_4x (hprepare_handle, param_index++, value, 0, 2) ) {
699 throw new Sql.SqlException (-1, Helper.get_statement_error_4x (hprepare_handle) );
707 if (param_index < argc) {
708 if (!Helper.bind_statement_param_4x (hprepare_handle, param_index++, value, 0, 3) ) {
709 throw new Sql.SqlException (-1, Helper.get_statement_error_4x (hprepare_handle) );
717 if (param_index < argc) {
718 if (!Helper.bind_statement_param_4x (hprepare_handle, param_index++, value, 0, 4) ) {
719 throw new Sql.SqlException (-1, Helper.get_statement_error_4x (hprepare_handle) );
728 if (
id > 0 &&
id < (argc + 1) ) {
729 if (value == nilptr) {
730 if (!Helper.bind_statement_param_4x (hprepare_handle,
id - 1, nilptr, 0, 0xf) ) {
731 throw new Sql.SqlException (-1, Helper.get_statement_error_4x (hprepare_handle) );
734 if (!Helper.bind_statement_param_4x (hprepare_handle,
id - 1, value, value.
length(), 0) ) {
735 throw new Sql.SqlException (-1, Helper.get_statement_error_4x (hprepare_handle) );
743 public void setValue (
int id,
int value)
override {
744 if (
id > 0 &&
id < (argc + 1) ) {
745 if (!Helper.bind_statement_param_4x (hprepare_handle,
id - 1, value, 0, 1) ) {
746 throw new Sql.SqlException (-1, Helper.get_statement_error_4x (hprepare_handle) );
753 public void setValue (
int id,
long value)
override {
754 if (
id > 0 &&
id < (argc + 1) ) {
755 if (!Helper.bind_statement_param_4x (hprepare_handle,
id - 1, value, 0, 2) ) {
756 throw new Sql.SqlException (-1, Helper.get_statement_error_4x (hprepare_handle) );
763 public void setValue (
int id,
byte value)
override {
764 if (
id > 0 &&
id < (argc + 1) ) {
765 if (!Helper.bind_statement_param_4x (hprepare_handle,
id - 1, value, 0, 3) ) {
766 throw new Sql.SqlException (-1, Helper.get_statement_error_4x (hprepare_handle) );
773 public void setValue (
int id,
double value)
override {
774 if (
id > 0 &&
id < (argc + 1) ) {
775 if (!Helper.bind_statement_param_4x (hprepare_handle,
id - 1, value, 0, 4) ) {
776 throw new Sql.SqlException (-1, Helper.get_statement_error_4x (hprepare_handle) );
785 for (
int i = 0; i < args.length; i++) {
786 if (args[i] == nilptr) {
788 }
else if (args[i].instanceOf (
String) ) {
790 }
else if (args[i].instanceOf (
int) ) {
792 }
else if (args[i].instanceOf (
long) ) {
794 }
else if (args[i].instanceOf (
byte) ) {
796 }
else if (args[i].instanceOf (
double) ) {
805 return Helper.stmt_affected_rows_4x (hprepare_handle);
809 return Helper.stmt_lastinserted_id_4x (hprepare_handle);
813 if (hprepare_handle != 0) {
814 Helper.close_statement_4x (hprepare_handle);
824 Helper.x_mysql_close (
_mysql);
835 byte [] __mysql =
new byte[2048];
838 if (0l == Helper.x_mysql_init (__mysql) ) {
839 throw new Sql.SqlException (Helper.x_mysql_errno (__mysql), Helper.x_mysql_error (__mysql) );
843 if (0 == Helper.x_mysql_options (__mysql, 0,
timeout) ) {
844 throw new Sql.SqlException (Helper.x_mysql_errno (__mysql), Helper.x_mysql_error (__mysql) );
848 if (0l == Helper.x_mysql_real_connect (__mysql, uri, username, pwd, nilptr,
port, nilptr,
client_flags) ) {
849 throw new Sql.SqlException (Helper.x_mysql_errno (__mysql), Helper.x_mysql_error (__mysql) );
862 return Helper.x_mysql_errno (
_mysql);
866 return Helper.x_mysql_error (
_mysql);
870 return Helper.x_mysql_state (
_mysql);
874 return Helper.x_mysql_info (
_mysql);
885 case MysqlOption.PORT:
889 case MysqlOption.TIMEOUT:
893 case MysqlOption.CHARSET:
898 if (0 != Helper.x_mysql_set_character_set (
_mysql, (
String) option) ) {
904 case MysqlOption.SELECTDB:
909 if (0 != Helper.x_mysql_select_db (
_mysql, (
String) option) ) {
915 case MysqlOption.RET_ERRCODE:
919 case MysqlOption.RET_CHANGES:
923 case MysqlOption.CLIENT_FLAGS:
934 return new MysqlStatement (
this);
938 return new MysqlPreparedStatement (
this, sql);
final String getMessage()
static final void loadLibrary(String)
long cdecl stmt_affected_rows_4x(Pointer)
long cdecl stmt_getIValueL(Pointer, int)
void cdecl x_mysql_close(ObjectPtr)
int cdecl stmt_find_column(Pointer, String key)
int cdecl x_mysql_options(ObjectPtr, int option, ObjectPtr )
long cdecl create_statement_4x(ObjectPtr)
Pointer cdecl x_mysql_row_seek(Pointer result, long offset)
void cdecl rs_free(Pointer)
int cdecl statement_execute_4x(Pointer)
bool cdecl next_statement_res_4x(Pointer)
long cdecl rs_getIValueL(Pointer, int)
int cdecl x_mysql_errno(ObjectPtr )
void cdecl x_mysql_data_seek(Pointer result, long offset)
int cdecl stmt_column_type(Pointer, int)
double cdecl stmt_getIValueD(Pointer, int)
Pointer cdecl x_mysql_real_connect(ObjectPtr, String host, String user, String passwd, String db, int port, String unix_socket, int clientflag)
bool cdecl close_statement_4x(Pointer)
void cdecl x_mysql_free_result(Pointer result)
String cdecl rs_getIValue(Pointer, int)
int cdecl rs_getIValueI(Pointer, int)
long cdecl rs_getValueL(Pointer, String)
long cdecl stmt_getValueL(Pointer, String)
long cdecl get_lastinserted_id_4x(ObjectPtr)
long cdecl x_mysql_num_rows(Pointer res)
int cdecl x_mysql_set_character_set(ObjectPtr, String csname)
String cdecl x_mysql_state(ObjectPtr )
double cdecl stmt_getValueD(Pointer, String)
long cdecl store_statement_res_4x(Pointer)
double cdecl rs_getValueD(Pointer, String)
String cdecl x_mysql_error(ObjectPtr )
int cdecl stmt_getValueI(Pointer, String)
String cdecl stmt_get_column(Pointer, int id)
long cdecl rs_getRowCount(Pointer)
int cdecl rs_getValueI(Pointer, String)
bool cdecl rs_first(Pointer)
long cdecl get_affected_rows_4x(ObjectPtr)
bool cdecl rs_next(Pointer)
bool cdecl reset_statement_4x(Pointer)
Pointer cdecl x_mysql_fetch_row(Pointer result)
Pointer cdecl x_mysql_store_result(ObjectPtr)
int cdecl x_mysql_query(ObjectPtr, String )
int cdecl x_mysql_select_db(ObjectPtr, String db)
long cdecl stmt_lastinserted_id_4x(Pointer)
String cdecl stmt_getValue(Pointer, String)
double cdecl rs_getIValueD(Pointer, int)
Pointer cdecl x_mysql_init(ObjectPtr )
int cdecl rs_label2Index(Pointer, String)
long cdecl stmt_row_count(Pointer)
bool cdecl rs_isValid(Pointer)
bool cdecl rs_last(Pointer)
int cdecl stmt_getIValueI(Pointer, int)
bool cdecl statement_res_isValid(Pointer)
int cdecl statement__prepare_4x(Pointer, String sql, int len)
String cdecl rs_getValue(Pointer, String)
String cdecl x_mysql_info(ObjectPtr )
String cdecl stmt_getIValue(Pointer, int)
String cdecl get_statement_error_4x(Pointer)
int cdecl x_mysql_num_fields(Pointer res)
Pointer cdecl x_mysql_row_tell(Pointer res)
bool cdecl rs_isLast(Pointer)
bool cdecl bind_statement_param_4x(Pointer, int n, ObjectPtr data, int len, int type)
String getString(int columnIndex) override
String getString(String columnlabel) override
bool getBoolean(int columnIndex) override
int getColumnCount() override
double getDouble(String columnlabel) override
float getFloat(String columnlabel) override
long getRowCount() override
int getInt(String columnlabel) override
float getFloat(int columnIndex) override
int findColumn(String name) override
int getColumnType(int id) override
long getLong(int columnIndex) override
String getColumnName(int i) override
double getDouble(int columnIndex) override
MysqlPreparedResultSet(Mysql.MysqlPreparedStatement _stmt, long r)
byte getByte(String columnlabel) override
long getLong(String columnlabel) override
bool getBoolean(String columnlabel) override
byte getByte(int columnIndex) override
int getInt(int columnIndex) override
Mysql.MysqlPreparedStatement stmt
void setValue(int id, byte value) override
MysqlPreparedStatement(Mysql m, String sql)
int get_changes() override
int get_lastInsertId() override
void setValue(int value) override
void setValue(int id, long value) override
void setValue(int id, int value) override
int execute(String sql) override
void setValue(long value) override
Sql.ResultSet executeQuery() override
void setValue(int id, String value) override
void setValue(int id, double value) override
Sql.ResultSet executeQuery(String sql) override
int executeUpdate() override
int executeUpdate(String sql) override
void setValue(String value) override
void setValues(Object [] args) override
Sql.ResultSet getResult() override
void setValue(byte value) override
void setValue(double value) override
Sql.Connection allocConnection(String drivername) override
String getString(int columnIndex) override
String getString(String columnlabel) override
bool getBoolean(int columnIndex) override
int getColumnCount() override
double getDouble(String columnlabel) override
float getFloat(String columnlabel) override
long getRowCount() override
int getInt(String columnlabel) override
float getFloat(int columnIndex) override
long getLong(int columnIndex) override
int findColumn(String) override
String getColumnName(int i) override
double getDouble(int columnIndex) override
byte getByte(String columnlabel) override
long getLong(String columnlabel) override
bool getBoolean(String columnlabel) override
byte getByte(int columnIndex) override
int getInt(int columnIndex) override
int get_changes() override
int get_lastInsertId() override
int execute(String sql) override
Sql.ResultSet executeQuery(String sql) override
int executeUpdate(String sql) override
Sql.ResultSet getResult() override
int getErrorCode() override
static const int CLIENT_PLUGIN_AUTH
static const int CLIENT_INTERACTIVE
void create(String uri, String username, String pwd) override
Object getOption(int opt) override
static const int CLIENT_NO_SCHEMA
static const int CLIENT_TRANSACTIONS
static const int CLIENT_PS_MULTI_RESULTS
static const int CLIENT_LONG_FLAG
static const int CLIENT_MULTI_STATEMENTS
static const int CLIENT_CONNECT_WITH_DB
static const String DRIVERNAME
static const int CLIENT_SSL
static const int CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA
static const int CLIENT_BASIC_FLAGS
static const int CLIENT_ODBC
static const int CLIENT_MULTI_RESULTS
static const int CLIENT_COMPRESS
static const int CLIENT_IGNORE_SIGPIPE
static const int CLIENT_DEPRECATE_EOF
static const int CLIENT_RESERVED
static const int CLIENT_LONG_PASSWORD
static const int CLIENT_REMEMBER_OPTIONS
static const int CLIENT_FOUND_ROWS
static const int CLIENT_ALL_FLAGS
static const int CLIENT_CONNECT_ATTRS
static const int CLIENT_PROTOCOL_41
Sql.Statement createStatement() override
Sql.PreparedStatement prepareStatement(String sql) override
static const int CLIENT_IGNORE_SPACE
static const int CLIENT_RESERVED2
static const int CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS
void setOption(int opt, Object option) override
String getError() override
static const int CLIENT_LOCAL_FILES
static const int CLIENT_SESSION_TRACK
static const int CLIENT_SSL_VERIFY_SERVER_CERT