云数据库 GAUSSDB-执行SQL语句:执行普通SQL语句

时间:2024-04-26 16:13:59

执行普通SQL语句

应用程序通过执行SQL语句来操作数据库的数据(不用传递参数的语句),需要按以下步骤执行。

支持对XML类型数据进行SELECT、UPDATE、INSERT、DELETE等操作。

  1. 调用Connection的createStatement方法创建语句对象。

    1
    2
    3
    4
    5
    6
    // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放,使用时解密),确保安全。
    // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。
    String userName = System.getenv("EXAMPLE_USERNAME_ENV");
    String password = System.getenv("EXAMPLE_PASSWORD_ENV");
    Connection conn = DriverManager.getConnection("url",userName,password);
    Statement stmt = conn.createStatement();
    

  2. 调用Statement的executeUpdate方法执行SQL语句。

    1
    int rc = stmt.executeUpdate("CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));");
    
    • 数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,事务块中不支持vacuum操作。如果其中有一个语句失败,那么整个请求都将会被回滚。
    • 使用Statement执行多语句时应以“;”作为各语句间的分隔符,存储过程、函数、匿名块不支持多语句执行。当preferQueryMode=simple,语句执行不进行解析逻辑,此场景下无法使用";"作为多语句间的分隔符。
    • “/”可用作创建单个存储过程、函数、匿名块、包体的结束符。当preferQueryMode=simple,语句执行不进行解析逻辑,此场景下无法使用"/"作为结束符。
    • 在prepareThreshold=1时,因为preferQueryMode默认模式不对statement进行缓存淘汰,所以statement执行的每条SQL都会缓存语句,可能导致内存膨胀。需要调整preferQueryMode=extendedCacheEverything,对statement进行缓存淘汰。

  3. 关闭语句对象。

    1
    stmt.close();
    

support.huaweicloud.com/centralized-devg-v3-gaussdb/gaussdb-12-0062.html