API 中定义了 Table 的数据形式以方便用户对数据的查询与使用。

创建表

方式一:通过构造方法

public BasicTable(final List<String> colNames, final List<Vector> cols)

参数介绍

  • colNames:表示表的列名。
  • cols:表示每一列的具体数据。

方式二:通过查询获取表数据

DBConnection dbConnection = new DBConnection();
DBConnection dbConnection = new DBConnection();
dbConnection.connect(HOST,PORT,USER,PASSWORD);
BasicTable basicTable = (BasicTable) dbConnection.run("select * from loadTable(\"dfs://ramd\",`pt3)");

表的基本使用

1. 通过 getColumn 方法获取某一列的所有值,方法定义如下:

// 第一种定义,可以通过列号来获取
public Vector getColumn(int index)

// 第二种定义,可以通过列名来获取
public Vector getColumn(String name)

返回值是 Vector 对象(com.xxdb.data.Vector),可以通过这个 Vector 遍历所有数据。

2. 直接操作 getColumn 返回的 Vector 对象来修改表中的内容,示例:

public void test_set_nullvalue() throws IOException {
  try{
      List<String> colNames =  Arrays.asList("cint","cdouble","clong","cfloat","cshort");
      List<Vector> colData = Arrays.asList(new BasicIntVector(1),new BasicDoubleVector(1),new BasicLongVector(1),new BasicFloatVector(1),new BasicShortVector(1));
      BasicTable bt = new BasicTable(colNames,colData);
      bt.getColumn("cint").set(0,new BasicInt(Integer.MIN_VALUE));
      bt.getColumn("cdouble").set(0,new BasicDouble(-Double.MIN_VALUE));
      bt.getColumn("clong").set(0,new BasicLong(Long.MIN_VALUE));
      bt.getColumn("cfloat").set(0,new BasicFloat(-Float.MAX_VALUE));
      bt.getColumn("cshort").set(0,new BasicShort(Short.MIN_VALUE));
      bt.getColumn("cshort").set(0,new BasicShort(Short.MIN_VALUE));
      bt.getColumn("cshort").set(0,new BasicShort(Short.MIN_VALUE));
      assertTrue(((Scalar)bt.getColumn("clong").get(0)).isNull());
  }catch (Exception e){
      e.printStackTrace();
  }
}

3. 如果想直接生成每一行 JSON 格式的数据,可以调用 getRowJson 方法:

DBConnection dbConnection = new DBConnection();
dbConnection.connect(HOST,PORT,USER,PASSWORD);
BasicTable basicTable = (BasicTable) dbConnection.run("select * from loadTable(\"dfs://ramd\",`pt3)");
// 获取行数
int rows = basicTable.rows();
// 遍历每一行
for(int i=0;i<rows;i++){
    System.out.println(basicTable.getRowJson(i));
}