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

本文详细介绍了如何在本地与云端之间灵活切换云数据库的使用方法,包括通过PHPMyAdmin在线管理数据库和在云环境应用中直接使用数据库的操作步骤。重点阐述了如何通过编写数据库辅助类和配置过滤器实现云端数据库访问的基本信息获取,以及如何在本地测试数据库并在云端同步使用。

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

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>
通过如上配置,即可在本地数据库与云端数据库自由切换了,经过测试是成功有效的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值