This is an automated email from the ASF dual-hosted git repository.

rong pushed a commit to branch jdbc-charset
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit d09621bf4ede5423da853835e328aa9fac4d4ecf
Author: Steve Yurong Su <[email protected]>
AuthorDate: Fri May 31 18:14:29 2024 +0800

    Add example
---
 .../java/org/apache/iotdb/JDBCCharsetExample.java  | 86 ++++++++++++++++++++++
 .../java/org/apache/iotdb/jdbc/IoTDBStatement.java |  9 ++-
 .../apache/iotdb/jdbc/IoTDBJDBCResultSetTest.java  | 36 ++++-----
 3 files changed, 113 insertions(+), 18 deletions(-)

diff --git 
a/example/jdbc/src/main/java/org/apache/iotdb/JDBCCharsetExample.java 
b/example/jdbc/src/main/java/org/apache/iotdb/JDBCCharsetExample.java
new file mode 100644
index 00000000000..143983d38c5
--- /dev/null
+++ b/example/jdbc/src/main/java/org/apache/iotdb/JDBCCharsetExample.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb;
+
+import org.apache.iotdb.jdbc.IoTDBSQLException;
+import org.apache.iotdb.jdbc.IoTDBStatement;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.UnsupportedEncodingException;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+
+public class JDBCCharsetExample {
+
+  private static final Logger LOGGER = 
LoggerFactory.getLogger(JDBCCharsetExample.class);
+
+  public static void main(String[] args) throws Exception {
+    Class.forName("org.apache.iotdb.jdbc.IoTDBDriver");
+
+    try (final Connection connection =
+            DriverManager.getConnection(
+                "jdbc:iotdb://127.0.0.1:6667?charset=GB18030", "root", "root");
+        final IoTDBStatement statement = (IoTDBStatement) 
connection.createStatement()) {
+
+      final String insertSQLWithGB18030 =
+          "insert into root.测试(timestamp, 维语, 彝语, 繁体, 蒙文, 简体, 标点符号, 藏语) 
values(1, 'ئۇيغۇر تىلى', 'ꆈꌠꉙ', \"繁體\", 'ᠮᠣᠩᠭᠣᠯ ᠬᠡᠯᠡ', '简体', '——?!', 
\"བོད་སྐད།\");";
+      final byte[] insertSQLWithGB18030Bytes = 
insertSQLWithGB18030.getBytes("GB18030");
+      statement.execute(insertSQLWithGB18030Bytes);
+
+      ResultSet resultSet = statement.executeQuery("select ** from root");
+      outputResult(resultSet);
+    } catch (IoTDBSQLException e) {
+      LOGGER.error("IoTDB Jdbc example error", e);
+    }
+  }
+
+  @SuppressWarnings({"squid:S106"})
+  private static void outputResult(ResultSet resultSet)
+      throws SQLException, UnsupportedEncodingException {
+    if (resultSet != null) {
+      System.out.println("--------------------------");
+      final ResultSetMetaData metaData = resultSet.getMetaData();
+      final int columnCount = metaData.getColumnCount();
+      for (int i = 0; i < columnCount; i++) {
+        System.out.print(metaData.getColumnLabel(i + 1) + " ");
+      }
+      System.out.println();
+
+      while (resultSet.next()) {
+        for (int i = 1; ; i++) {
+          System.out.print(
+              resultSet.getString(i) + " (" + new 
String(resultSet.getBytes(i), "GB18030") + ")");
+          if (i < columnCount) {
+            System.out.print(", ");
+          } else {
+            System.out.println();
+            break;
+          }
+        }
+      }
+      System.out.println("--------------------------\n");
+    }
+  }
+}
diff --git 
a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java 
b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java
index f321bd9d800..ffc79a41a72 100644
--- a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java
+++ b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java
@@ -129,7 +129,14 @@ public class IoTDBStatement implements Statement {
       ZoneId zoneId,
       int seconds)
       throws SQLException {
-    this(connection, client, sessionId, Config.DEFAULT_FETCH_SIZE, zoneId, 
Charset.defaultCharset(), seconds);
+    this(
+        connection,
+        client,
+        sessionId,
+        Config.DEFAULT_FETCH_SIZE,
+        zoneId,
+        Charset.defaultCharset(),
+        seconds);
   }
 
   // Only for tests
diff --git 
a/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSetTest.java
 
b/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSetTest.java
index 46595d3d79c..e69c7673d66 100644
--- 
a/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSetTest.java
+++ 
b/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/IoTDBJDBCResultSetTest.java
@@ -19,23 +19,6 @@
 
 package org.apache.iotdb.jdbc;
 
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.Statement;
-import java.sql.Types;
-import java.time.ZoneId;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.service.rpc.thrift.IClientRPCService;
@@ -46,6 +29,7 @@ import org.apache.iotdb.service.rpc.thrift.TSFetchMetadataReq;
 import org.apache.iotdb.service.rpc.thrift.TSFetchMetadataResp;
 import org.apache.iotdb.service.rpc.thrift.TSFetchResultsReq;
 import org.apache.iotdb.service.rpc.thrift.TSFetchResultsResp;
+
 import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.read.common.block.TsBlockBuilder;
 import org.apache.tsfile.read.common.block.column.TsBlockSerde;
@@ -55,6 +39,24 @@ import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.Statement;
+import java.sql.Types;
+import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
 /*
    This class is designed to test the function of TsfileQueryResultSet.
    This class also sheds light on the complete execution process of a query 
sql from the jdbc perspective.

Reply via email to