使用Java通过JDBC连接 Phoenix


import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * The class test.
 * <p>
 * Description:
 *
 * @author: bianhaonan
 * @since: 2017/07/20
 * @version:
 */
public class PhoenixJDBCTest {
    @Test
    public void PhoenixJDBCTest(){
        System.out.println(getConnection());
    }

    @Test
    public void create(){
        Connection conn = null;
        try {
            // 获得链接
            conn = getConnection();

            // 检查链接是否为空
            if (conn == null) {
                System.out.println("conn is null...");
                return;
            }

            // 检查表是否存在
            ResultSet rs = conn.getMetaData().getTables(null, null, "USER",null);
            if (rs.next()) {
                System.out.println("table user is exist...");
                return;
            }
            // 定义创建表sql
            String sql = "CREATE TABLE user (id varchar PRIMARY KEY,INFO.account varchar ,INFO.passwd varchar)";

            PreparedStatement ps = conn.prepareStatement(sql);

            // 创建表
            ps.execute();
            System.out.println("create success...");

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    @Test
    public void add(){
        Connection conn = null;
        try {
            // 获得链接
            conn = getConnection();

            // 检查链接是否为空
            if (conn == null) {
                System.out.println("conn is null...");
                return;
            }

            // 插入数据sql
            String sql = "upsert into user(id, INFO.account, INFO.passwd) values('001', 'admin', 'admin')";

            PreparedStatement ps = conn.prepareStatement(sql);

            // 插入数据
            String msg = ps.executeUpdate() > 0 ? "insert success..."
                    : "insert fail...";

            // 手动提交 *必须项,不然数据插入不成功*
            conn.commit();
            System.out.println(msg);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
    @Test
    public void select(){
        Connection conn = null;
        try {
            // 获得链接
            conn = getConnection();

            // 检查链接是否为空
            if (conn == null) {
                System.out.println("conn is null...");
                return;
            }

            // 查询sql
            String sql = "select * from user";

            PreparedStatement ps = conn.prepareStatement(sql);

            // 查询数据
            ResultSet rs = ps.executeQuery();

            System.out.println("id" + "\t" + "account" + "\t" + "passwd");
            System.out.println("======================");

            if (rs != null) {
                while (rs.next()) {
                    System.out.print(rs.getString("id") + "\t");
                    System.out.print(rs.getString("account") + "\t");
                    System.out.println(rs.getString("passwd"));
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    @Test
    public void deleteData(){
        Connection conn = null;
        try {
            // 获得链接
            conn = getConnection();

            // 检查链接是否为空
            if (conn == null) {
                System.out.println("conn is null...");
                return;
            }

            // 创建sql
            String sql = "delete from user where id='001'";

            PreparedStatement ps = conn.prepareStatement(sql);

            // 执行sql
            String msg = ps.executeUpdate() > 0 ? "delete success..."
                    : "delete fail...";

            // 手动提交 *必须项,不然数据删除不成功*
            conn.commit();
            System.out.println(msg);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    @Test
    public void deleteTable(){
        Connection conn = null;
        try {
            // get connection
            conn = getConnection();

            // check connection
            if (conn == null) {
                System.out.println("conn is null...");
                return;
            }

            // create sql
            String sql = "drop table user2";

            PreparedStatement ps = conn.prepareStatement(sql);

            // execute
            ps.execute();

            System.out.println("drop success...");

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public Connection getConnection(){
        try {
            // load driver
            Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
            // jdbc 的 url 类似为 jdbc:phoenix [ :<zookeeper quorum> [ :<port number> ] [ :<root node> ] ],
            // 需要引用三个参数:hbase.zookeeper.quorum、hbase.zookeeper.property.clientPort、and zookeeper.znode.parent,
            // 这些参数可以缺省不填而在 hbase-site.xml 中定义。
            return DriverManager.getConnection("jdbc:phoenix:slave1,slave2,slave3:2181");
            //DriverManager.getConnection("jdbc:phoenix:host1,host2:2181");

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

文章作者: hnbian
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hnbian !
评论
 上一篇
hive 常用函数整理 1.关系运算 hive 常用函数整理 1.关系运算
1. 等值比较: =语法:A=B 操作类型:所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE;否则为FALSE 举例: hive> select 1 from student where 1=1; 1 2. 不等值比较:
2017-07-23
下一篇 
Phoenix on HBase 性能测试 Phoenix on HBase 性能测试
1. 目的测试 phoenix 引擎在 hbase 上的数据查询与数据写入的性能,探索 phoenix 的特性和限制。 2. 软件版本phoenix-4.8.0-HBase-1.1 HBase-1.1.6 3. 硬件环境四台配置相同的PC机
2017-07-20
  目录