日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用Java JDBC接口的應用開發

本文介紹通過Java語言的標準JDBC接口使用SQL開發Lindorm寬表應用的方法和示例。

前提條件

  • 已安裝Java環境,要求安裝JDK 1.8及以上版本。

  • 已將客戶端IP地址添加至Lindorm白名單,具體操作請參見設置白名單

使用限制

本文操作僅適用于Lindorm寬表模式,不支持Lindorm Serverless。

操作步驟

說明

您可以使用操作步驟中的示例代碼,也可以直接下載示例代碼在本地編譯和運行。本文中示例代碼在com.aliyun.lindorm.sql.demo.BasicDemo類中。

  1. 下載Lindorm客戶端。以Maven項目為例,在pom.xml文件的dependencies中添加依賴項。示例代碼如下:

    <dependency> 
      <groupId>com.aliyun.lindorm</groupId>  
      <artifactId>lindorm-all-client</artifactId>
      <version>2.2.1.3</version>
    </dependency>
  2. 初始化Lindorm客戶端并建立Lindorm客戶端和數據之間的連接。

    //Lindorm寬表SQL的連接地址。
    String url = "jdbc:lindorm:table:url=http://ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30060";
    //Lindorm控制臺獲取的數據庫用戶名。
    String username = "root";
    //Lindorm控制臺獲取的數據庫密碼。
    String password = "test";
    //建立連接時可指定某一database。若不指定database,默認使用default。
    String database = "default";
    Properties properties = new Properties();
    properties.put("user", username);
    properties.put("password", password);
    properties.put("database", database);
    
    //獲取連接
    Connection connection = DriverManager.getConnection(url, properties);
    重要

    為了提高資源利用率,在連接Lindorm客戶端空閑十分鐘后,服務端會主動斷開連接。如果此時復用該連接,會出現com.aliyun.lindorm.client.shaded.org.apache.calcite.avatica.http.ConnectionDisconnectedException報錯,重新建立連接即可解決。

    連接使用到的參數及其說明如下:

    參數

    示例值

    說明

    url

    jdbc:lindorm:table:url=http://ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30060

    Lindorm 寬表SQL地址。如何獲取,請參見查看連接地址

    重要
    • 如果應用部署在ECS實例,建議您通過專有網絡訪問Lindorm實例,可獲得更高的安全性和更低的網絡延遲。

    • 如果應用部署在本地,在通過公網連接Lindorm實例前,需在控制臺開通公網地址。開通方式:在控制臺選擇數據庫連接 > 寬表引擎,在寬表引擎頁簽單擊開通公網地址

    username

    root

    如果您忘記用戶密碼,可以通過Lindorm寬表引擎的集群管理系統修改密碼。具體操作,請參見修改用戶密碼

    password

    test

    database

    default

    需要連接的數據庫名稱。默認連接default數據庫。

  3. 建立連接后,使用Lindorm寬表SQL Java API訪問Lindorm寬表。示例代碼如下:

    /* -------------- 基于JDBC的CRUD示例 ----------------- */
    
    String tableName = "sql_table_" + new Random().nextInt(1000);
    //創建表
    try (Statement statement = connection.createStatement()) {
      String sql = "create table if not exists " + tableName + "(id VARCHAR, name VARCHAR, primary key(id))";
      int ret = statement.executeUpdate(sql);
      System.out.println(ret);
    }
    
    //插入數據
    String upsertSql = "upsert into " + tableName + "(id,name) values(?,?)";
    try (PreparedStatement ps = connection.prepareStatement(upsertSql)) {
      int batchSize = 100;
      for (int i = 0; i < batchSize; i++) {
        ps.setString(1, "aa" + i);
        ps.setString(2, "bb" + i);
        //加入批次
        ps.addBatch();
      }
      //執行全部批次的寫入。
      //出于性能和穩定性考量,添加的批次數量不宜過大。
      //建議一次executeBatch()寫入的批次數最多在百級別。
      int[] ret = ps.executeBatch();
      System.out.println(Arrays.toString(ret));
    }
    
    //查詢數據
    String querySql = "select * from " + tableName + " where id=?";
    try (PreparedStatement ps = connection.prepareStatement(querySql)) {
      ps.setString(1, "aa1");
      ResultSet rs = ps.executeQuery();
      while (rs.next()) {
        String id = rs.getString(1);
        String name = rs.getString(2);
        System.out.println("id=" + id);
        System.out.println("name=" + name);
      }
    }
    
    //刪除數據
    String deleteSql = "delete from " + tableName + " where id=?";
    try (PreparedStatement ps = connection.prepareStatement(deleteSql)) {
      ps.setString(1, "aa1");
      ps.executeUpdate();
    }
    
    // 更新數據
    // Lindorm SQL Update語句僅支持單行更新,不支持批量更新
    // 即where條件必須指定全部主鍵
    String updateSql = "update " + tableName + " set name = ? where id=?";
    try (PreparedStatement ps = connection.prepareStatement(updateSql)) {
      ps.setString(1, "bb2update");
      ps.setString(2, "aa2");
      ps.executeUpdate();
    }
    String querySql1 = "select * from " + tableName + " where id=?";
    try (PreparedStatement ps = connection.prepareStatement(querySql1)) {
      ps.setString(1, "aa2");
      ResultSet rs = ps.executeQuery();
      System.out.println("--------- update-----------");
      while (rs.next()) {
      String id = rs.getString(1);
      String name = rs.getString(2);
      System.out.println("id=" + id);
      System.out.println("name=" + name);
     }
    }
    
    // 刪除表
    String dropTable = "drop table " + tableName;
    try (Statement stmt = connection.createStatement()) {
      stmt.execute(dropTable);
    }
    
    //關閉連接,當結束操作時要確保連接被關閉,否則會造成連接泄漏。
    connection.close();

常用框架訪問寬表引擎的示例

為了滿足更多用戶的需求,下文匯總了不同Java框架訪問Lindorm寬表引擎的代碼示例:

相關文檔

關于Lindorm寬表SQL的語法使用請參見SQL語法手冊