bae云数据库访问及使用方法

经过苦苦摸索,已经调通了云数据库的使用方法,现在总结如下

bae云数据库分访问方式只有两种:

1、通过phpMyadmin使用其云数据库,主要是在线管理数据库 

2、在云环境应用中使用,即自己的项目部署到云端后才能使用

根据官方提供的demo,数据库的host,port,username,password必须通过BaeEnv云环境请求获取,那么我们该如何在本地测试数据库,然后在云端同步使用呢?为方便我们使用和测试,可以采用如下方法实现:

编写数据库辅助类:DBUtil.java
public class DBUtil {

    private static String dbUrl = "jdbc:";
    public static String port;
    public static String host;
    public static String username;
    public static String password;
    public static String databaseName = "IjhBtVDLptcVQsn";//云数据库名

    //拒绝new一个实例 
    private DBUtil() {}; 

    static {//注册驱动 
        try { 
            Class.forName("com.mysql.jdbc.Driver"); 
        } catch (Exception e) { 
            throw new ExceptionInInitializerError(e);
        } 
    } 

    public static Connection getConnection() throws SQLException {
        String connName = dbUrl + host + ":" + port + "/" + databaseName;
        return DriverManager.getConnection(connName, DBUtil.username, DBUtil.password);
    } 
}
由于云端数据库的访问必须通过请求获取,因此我们编写一个过滤器来实现host,port等基本信息的初始化,DBFilter如下:
public class DBFilter implements Filter {

    /** * Default constructor. */
    public DBFilter() {
        // TODO Auto-generated constructor stub
    }

    /** * @see Filter#destroy() */
    public void destroy() {
        // TODO Auto-generated method stub
    }

    /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        DBUtil.host = BaeEnv.getBaeHeader(BaeEnv.BAE_ENV_ADDR_SQL_IP);         //云环境使用的host,port等信息获取
        DBUtil.port = BaeEnv.getBaeHeader(BaeEnv.BAE_ENV_ADDR_SQL_PORT);    //当我们将代码部署到云端时,使用这些配置
        DBUtil.username = BaeEnv.getBaeHeader(BaeEnv.BAE_ENV_AK);
        DBUtil.password = BaeEnv.getBaeHeader(BaeEnv.BAE_ENV_SK);
        /*DBUtil.host = "localhost"; //当我们在本地mysql数据库测试时,使用这些配置, DBUtil.port = "3306"; //将云端数据库配置注释即可 DBUtil.username = "root"; DBUtil.password = "123456"; DBUtil.databaseName = "kit";*/
        chain.doFilter(request, response);
    }

    /** * @see Filter#init(FilterConfig) */
    public void init(FilterConfig fConfig) throws ServletException {
    }

}
web.xml配置如下:
<!-- 用于访问mysql数据库过滤,主要用于访问bae云数据库 -->
  <filter>
    <display-name>DBFilter</display-name>
    <filter-name>DBFilter</filter-name>
    <filter-class>com.knowave.kit.filter.DBFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>DBFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
通过如上配置,即可在本地数据库与云端数据库自由切换了,经过测试是成功有效的。

你可能感兴趣的:(BAE,云数据库)