mysqlmodule.java
来自「RESIN 3.2 最新源码」· Java 代码 · 共 1,189 行 · 第 1/3 页
JAVA
1,189 行
} /** * Returns a string describing the host. */ public static StringValue mysql_get_host_info(Env env, @Optional Mysqli conn) { if (conn == null) conn = getConnection(env); return conn.get_host_info(env); } /** * Returns an integer respresenting the MySQL protocol * version. */ public static int mysql_get_proto_info(Env env, @Optional Mysqli conn) { if (conn == null) conn = getConnection(env); return conn.get_proto_info(); } /** * Returns the MySQL server version. */ public static Value mysql_get_server_info(Env env, @Optional Mysqli conn) { if (conn == null) { conn = getConnection(env); } if (conn != null && conn.isConnected()) return conn.get_server_info(env); else return NullValue.NULL; } /** * returns ID generated for an AUTO_INCREMENT column by the previous * INSERT query on success, 0 if the previous query does not generate * an AUTO_INCREMENT value, or FALSE if no MySQL connection was established */ public static Value mysql_insert_id(Env env, @Optional Mysqli conn) { if (conn == null) conn = getConnection(env); return conn.insert_id(env); } /** * Returns a result pointer containing the databases available from the current mysql daemon. */ public static Value mysql_list_dbs(Env env, @Optional Mysqli conn) { if (conn == null) conn = getConnection(env); // php/1451 // need to return results having column name 'Database' for typo3 // // MySQL Connector/J 5.x returns 'SCHEME_NAME' as the column name // for "SHOW DATABASES", while 3.x returns 'Database' return mysql_query(env, env.createString("SELECT SCHEMA_NAME AS 'Database' FROM information_schema.SCHEMATA"), conn); } /** * Retrieves information about the given table name. * A Result on success, FALSE on failure. */ public static Value mysql_list_fields(Env env, StringValue databaseName, StringValue tableName, @Optional Mysqli conn) { if (databaseName.length() == 0) return BooleanValue.FALSE; if (tableName.length() == 0) return BooleanValue.FALSE; return mysql_db_query(env, databaseName, env.createString("SELECT * FROM " + tableName + " WHERE NULL"), conn); } /** * Deprecated alias for mysql_list_fields */ public static Value mysql_listfields(Env env, StringValue databaseName, StringValue tableName, @Optional Mysqli conn) { return mysql_list_fields(env, databaseName, tableName, conn); } /** * Returns result set or false on error */ public static Value mysql_db_query(Env env, StringValue databaseName, StringValue query, @Optional Mysqli conn) { if (conn == null) conn = getConnection(env); if (! conn.select_db(databaseName)) return BooleanValue.FALSE; return conn.query(env, query, 1); } /** * Selects the database */ public static boolean mysql_select_db(Env env, StringValue dbName, @Optional Mysqli conn) { if (dbName.length() == 0) return false; if (conn == null) return getConnection(env, dbName).select_db(dbName); else return conn.select_db(dbName); } /** * Retrieves a list of table names from a MySQL database. */ public static Object mysql_list_tables(Env env, StringValue databaseName, @Optional Mysqli conn) { return mysql_query(env, env.createString("SHOW TABLES FROM " + databaseName), conn); } /** * Get number of fields in result */ public static Value mysql_num_fields(Env env, @NotNull MysqliResult result) { if (result == null) return BooleanValue.FALSE; return LongValue.create(result.num_fields()); } /** * Deprecated alias for mysql_num_fields */ public static Value mysql_numfields(Env env, @NotNull MysqliResult result) { return mysql_num_fields(env, result); } /** * Retrieves the number of rows in a result set. */ public static Value mysql_num_rows(Env env, @NotNull MysqliResult result) { if (result == null) return BooleanValue.FALSE; return result.num_rows(); } /** * Undocumented alias for {#link #mysql_num_rows}. */ public static Value mysql_numrows(Env env, @NotNull MysqliResult result) { return mysql_num_rows(env, result); } /** * Returns a new mysql connection. */ public static Value mysql_pconnect(Env env, @Optional StringValue server, @Optional StringValue user, @Optional StringValue password, @Optional boolean newLink, @Optional int flags) { Value value = mysql_connect(env, server, user, password, newLink, flags); Mysqli conn = (Mysqli) env.getSpecialValue("caucho.mysql"); if (conn != null && conn.isConnected()) conn.setPersistent(); return value; } /** * Returns a new mysql connection. */ public static Value mysql_connect(Env env, @Optional StringValue host, @Optional StringValue userName, @Optional StringValue password, @Optional boolean newLink, @Optional int flags) { int port = 3306; String socketStr = ""; String hostStr = host.toString(); int length = host.length(); if (length == 0) { hostStr = env.getIniString("mysql.default_host"); if (hostStr == null) hostStr = "localhost"; } // host string could contain just a host name, // or it could contain a host name // and a port number, or it could contain // a host name and local socket name, or all 3. // // "localhost" // "localhost:3306" // ":3306" // ":/tmp/mysql.sock" // "localhost:/tmp/mysql.sock" // "localhost:3306:/tmp/mysql.sock" int sepIndex = hostStr.indexOf(':'); if (sepIndex > -1) { String tmp; String portStr; tmp = hostStr; hostStr = tmp.substring(0, sepIndex); if (hostStr.length() == 0) { hostStr = "localhost"; } sepIndex++; tmp = tmp.substring(sepIndex); if ((tmp.length() > 0) && (tmp.charAt(0) != '/')) { sepIndex = tmp.indexOf(':'); if (sepIndex > -1) { portStr = tmp.substring(0, sepIndex); sepIndex++; socketStr = tmp.substring(sepIndex); } else { portStr = tmp; } try { port = Integer.parseInt(portStr); } catch (NumberFormatException ex) { // Use default port in case of invalid port number } } else { socketStr = tmp; } } String catalog = (String) env.getQuercus().getSpecial("mysql.catalog"); if (catalog == null) catalog = ""; Mysqli mysqli = new Mysqli(env, hostStr, userName.toString(), password.toString(), catalog, port, socketStr, flags, null, null); if (! mysqli.isConnected()) return BooleanValue.FALSE; Value value = env.wrapJava(mysqli); env.setSpecialValue("caucho.mysql", mysqli); return value; } /** * Checks if the connection is still valid. */ public static boolean mysql_ping(Env env, @Optional Mysqli conn) { if (conn == null) conn = getConnection(env); return conn.ping(env); } /** * Returns a string with the status of the connection * or NULL if error. */ public static Value mysql_stat(Env env, @Optional Mysqli conn) { if (conn == null) conn = getConnection(env); Value result = conn.stat(env); return result == BooleanValue.FALSE ? NullValue.NULL : result; } /** * Retrieves the table name corresponding to a field, using * a result return by {@link #mysql_list_tables}. */ public static Value mysql_tablename(Env env, @NotNull MysqliResult result, int i) { if (result == null) return BooleanValue.FALSE; return result.getResultField(env, i, LongValue.ZERO); } /** * Queries the database. */ public static Object mysql_unbuffered_query(Env env, @NotNull StringValue name, @Optional Mysqli conn) { // An "unbuffered" query is a performance optimization // for large data sets. Mysql will lock the table in // question until all rows are read by the client. // It is unclear how this would be implemented on top // of Connector/J. return mysql_query(env, name, conn); } /** * Query an identifier that corresponds to this specific * connection. Mysql calls this integer identifier a * thread, but it is really a connection identifier. */ public static Value mysql_thread_id(Env env, @Optional Mysqli conn) { if (conn == null) conn = getConnection(env); return conn.thread_id(env); } //@todo mysql_list_processes() //@todo mysql_set_charset() private static Mysqli getConnection(Env env) { return getConnection(env, env.getEmptyString()); } private static Mysqli getConnection(Env env, StringValue db) { Mysqli conn = (Mysqli) env.getSpecialValue("caucho.mysql"); // php/1436 if (conn != null) return conn; conn = new Mysqli(env, env.getEmptyString(), env.getEmptyString(), env.getEmptyString(), db, 3306, env.getEmptyString()); env.setSpecialValue("caucho.mysql", conn); return conn; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?