
# IoTDB Session样例程序
#### 功能简介
通过Session连接方式，执行IoTDB SQL语句。
#### 代码样例
下面代码片段仅为演示，具体代码参见"com.huawei.bigdata.SessionExample"。
其中修改HOST_1、HOST_2、HOST_3为IoTDBServer所在节点的业务IP，在Session对象的参数里，设置用户名和密码。
![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
- 待连接的IoTDBServer所在节点的业务IP地址，可通过登录FusionInsight Manager界面，选择"集群 \> 服务 \> IoTDB \> 实例"查看。

- RPC端口可通过登录FusionInsight Manager，选择"集群 \> 服务 \> IoTDB \> 配置 \> 全部配置"，搜索参数"IOTDB_SERVER_RPC_PORT"获得。
- 安全模式下，登录IoTDBServer所在节点的用户名和密码由FusionInsight Manager统一控制，参考[准备集群认证用户信息](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_500049.html#mrs_07_500049__section10916205214313)，确保该用户具有操作IoTDB服务的角色权限。
- 需在本地环境变量中设置环境变量认证用户名和认证用户密码，建议密文存放，使用时解密，确保安全。其中：
  - *认证用户名*为访问IoTDB的用户名。
  
  - *认证用户密码*为访问IoTDB的用户密码。
   
 
```
/**
    * 安全模式下，“SSL_ENABLE”默认为“true”，需要导入truststore.jks文件。
    * 安全模式下，也可登录FusionInsight Manager，选择“集群 > 服务 > IoTDB > 配置”，在搜索框中搜索“SSL”，修改“SSL_ENABLE”参数值为“false”；保存配置后需重启IoTDB服务使配置生效。并修改客户端“客户端安装目录/IoTDB/iotdb/conf”目录下的“iotdb-client.env”文件中的配置：iotdb_ssl_enable="false"。
    */
    private static final String IOTDB_SSL_ENABLE = "true"; //该值为“SSL_ENABLE”参数值。
public static void main(String[] args)
      throws IoTDBConnectionException, StatementExecutionException {
    // set iotdb_ssl_enable
    System.setProperty("iotdb_ssl_enable", IOTDB_SSL_ENABLE);
    if ("true".equals(IOTDB_SSL_ENABLE)) {  
      // set truststore.jks path  
      System.setProperty("iotdb_ssl_truststore", "truststore文件路径");
    }
    session = new Session(nodeUrls, 端口, 认证用户名,认证用户密码);
    session.open(false);
    // set session fetchSize
    session.setFetchSize(10000);
    try {
      session.setStorageGroup("root.sg1");
    } catch (StatementExecutionException e) {
      if (e.getStatusCode() != TSStatusCode.PATH_ALREADY_EXIST_ERROR.getStatusCode()) {
        throw e;
      }
    }
    createTimeseries();
    createMultiTimeseries();
    insertRecord();
    insertTablet();
    insertTablets();
    insertRecords();
    nonQuery();
    query();
    queryWithTimeout();
    rawDataQuery();
    queryByIterator();
    deleteData();
    deleteTimeseries();
    setTimeout();
    sessionEnableRedirect = new Session(nodeUrls, 认证用户名, 认证用户密码);
    sessionEnableRedirect.setEnableQueryRedirection(true);
    sessionEnableRedirect.open(false);
    // set session fetchSize
    sessionEnableRedirect.setFetchSize(10000);
    insertRecord4Redirect();
    query4Redirect();
    sessionEnableRedirect.close();
    session.close();
  }
```
