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 + -
显示快捷键?