云服务器内容精选

  • 关闭数据库连接 在使用数据库连接完成相应的数据操作后,需要关闭数据库连接。 关闭数据库连接可以直接调用其close方法即可。 // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放,使用时解密),确保安全; // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。 String userName = System.getenv("EXAMPLE_USERNAME_ENV"); String password = System.getenv("EXAMPLE_PASSWORD_ENV"); Connection conn = DriverManager.getConnection(sourceURL, userName, password); conn.close(); 父主题: 基于JDBC开发
  • JDBC接口参考 JDBC接口是一套提供给用户的API方法,本节将对部分常用接口做具体描述,若涉及其他接口可参考JDK1.8(软件包)/JDBC4.0中相关内容。 java.sql.Connection java.sql.CallableStatement java.sql.DatabaseMetaData java.sql.Driver java.sql.PreparedStatement java.sql.ResultSet java.sql.ResultSetMetaData java.sql.Statement javax.sql.ConnectionPoolDataSource javax.sql.DataSource javax.sql.PooledConnection javax.naming.Context javax.naming.spi.InitialContextFactory CopyManager PGReplicationConnection PGReplicationStream ChainedStreamBuilder ChainedCommonStreamBuilder 父主题: 基于JDBC开发
  • JDBC数据类型映射关系 数据类型、JAVA变量类型以及JDBC类型索引关系如下: 兼容模式 GaussDB 数据类型 JAVA变量类型 JDBC类型索引 ORA/MYSQL oid java.lang.Long java.sql.Types.BIGINT ORA/MYSQL numeric java.math.BigDecimal java.sql.Types.NUMERIC ORA/MYSQL tinyint java.lang.Integer java.sql.Types.TINYINT ORA/MYSQL smallint java.lang.Integer java.sql.Types.SMALLINT ORA/MYSQL bigint java.lang.Long java.sql.Types.BIGINT ORA/MYSQL float4 java.lang.Float java.sql.Types.REAL ORA/MYSQL float8 java.lang.Double java.sql.Types.DOUBLE ORA/MYSQL char java.lang.String java.sql.Types.CHAR ORA/MYSQL character java.lang.String java.sql.Types.CHAR ORA/MYSQL bpchar java.lang.String java.sql.Types.CHAR ORA/MYSQL character varying java.lang.String java.sql.Types.VARCHAR ORA/MYSQL varchar java.lang.String java.sql.Types.VARCHAR ORA/MYSQL text java.lang.String java.sql.Types.VARCHAR ORA/MYSQL name java.lang.String java.sql.Types.VARCHAR ORA/MYSQL bytea byte[] java.sql.Types.BINARY ORA/MYSQL blob java.sql.Blob java.sql.Types.BLOB ORA/MYSQL clob java.sql.Clob java.sql.Types.CLOB ORA/MYSQL bool java.lang.Boolean java.sql.Types.BIT MYSQL date java.sql.Date java.sql.Types.DATE ORA/MYSQL time java.sql.Time java.sql.Types.TIME ORA/MYSQL timetz java.sql.Time java.sql.Types.TIME ORA/MYSQL timestamp java.sql.Timestamp java.sql.Types.TIMESTAMP ORA/MYSQL smalldatetime java.sql.Timestamp java.sql.Types.TIMESTAMP ORA/MYSQL timestamptz java.sql.Timestamp java.sql.Types.TIMESTAMP ORA/MYSQL refcursor java.sql.ResultSet java.sql.Types.REF_CURSOR java.sql.Types.OTHER -10 父主题: 基于JDBC开发
  • 加载驱动 在创建数据库连接之前,需要先加载数据库驱动程序。 加载驱动有两种方法: 在代码中创建连接之前任意位置隐含装载:Class.forName("org.postgresql.Driver"); 在JVM启动时参数传递:java -Djdbc.drivers=org.postgresql.Driver jdbctest 上述jdbctest为测试用例程序的名称。 当使用opengaussjdbc.jar时,上面的Driver类名相应修改为“com.huawei.opengauss.jdbc.Driver”。 父主题: 基于JDBC开发
  • 连接数据库(以UDS方式) UNIX domain socket用于同一主机上不同进程间的数据交换,通过添加junixsocket获取套接字工厂使用。 需要引用的jar包有junixsocket-core-XXX.jar、junixsocket-common-XXX.jar、junixsocket-native-common-XXX.jar。同时需要在URL连接串中添加:socketFactory=org.newsclub.net.unix.AFUNIXSocketFactory$FactoryArg&socketFactoryArg=[path-to-the-unix-socket]。 示例: // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放,使用时解密),确保安全; // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.util.Properties; public class Test { public static void main(String[] args) { String driver = "org.postgresql.Driver"; String userName = System.getenv("EXAMPLE_USERNAME_ENV"); String password = System.getenv("EXAMPLE_PASSWORD_ENV"); Connection conn; try { Class.forName(driver).newInstance(); Properties properties = new Properties(); properties.setProperty("user", userName); properties.setProperty("password", password); conn = DriverManager.getConnection("jdbc:postgresql://$ip:$port/postgres?socketFactory=org.newsclub" + ".net.unix" + ".AFUNIXSocketFactory$FactoryArg&socketFactoryArg=/data/tmp/.s.PGSQL.8000", properties); System.out.println("Connection Successful!"); Statement statement = conn.createStatement(); statement.executeQuery("select 1"); } catch (Exception e) { e.printStackTrace(); } } } socketFactoryArg参数配置根据真实路径进行配置,与GUC参数unix_socket_directory的值保持一致。 连接主机名必须设置为“localhost”。 父主题: 基于JDBC开发
  • 环境类 客户端需配置JDK1.8,配置方法如下: DOS窗口(windows下的命令提示符)输入“java -version”,查看JDK版本,确认为JDK1.8版本。如果未安装JDK,请从官方网站下载安装包并安装。 根据如下步骤配置系统环境变量。 右键单击“我的电脑”,选择“属性”。 在“系统”页面左侧导航栏单击“高级系统设置”。 在“系统属性”页面,“高级”页签上单击“环境变量”。 在“环境变量”页面上,“系统变量”区域单击“新建”或“编辑”配置系统变量。变量说明请参见表1。 表1 变量说明 变量名 操作 变量值 JAVA_HOME 若存在,则单击“编辑”。 若不存在,则单击“新建”。 JAVA的安装目录。 例如:C:\Program Files\Java\jdk1.8.0_131。 Path 单击“编辑”。 若配置了JAVA_HOME,则在变量值的最前面加上: %JAVA_HOME%\bin。 若未配置JAVA_HOME,则在变量值的最前面加上JAVA安装的全路径: C:\Program Files\Java\jdk1.8.0_131\bin。 CLASSPATH 单击“新建”。 %JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar。
  • 示例 示例1:连接数据库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 //以下用例以gsjdbc4.jar为例。 //以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。 public static Connection getConnect(String username, String passwd) { //驱动类。 String driver = "org.postgresql.Driver"; //数据库连接描述符。 String sourceURL = "jdbc:postgresql://$ip:$port/postgres"; Connection conn = null; try { //加载驱动。 Class.forName(driver); } catch( Exception e ) { e.printStackTrace(); return null; } try { //创建连接。 conn = DriverManager.getConnection(sourceURL, username, passwd); System.out.println("Connection succeed!"); } catch(Exception e) { e.printStackTrace(); return null; } return conn; } 示例2:使用Properties对象作为参数建立连接 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 // 以下代码将使用Properties对象作为参数建立连接 public static Connection getConnectUseProp(String username, String passwd) { //驱动类。 String driver = "org.postgresql.Driver"; //数据库连接描述符。 String sourceURL = "jdbc:postgresql://$ip:$port/postgres?autoBalance=true"; Connection conn = null; Properties info = new Properties(); try { //加载驱动。 Class.forName(driver); } catch( Exception e ) { e.printStackTrace(); return null; } try { info.setProperty("user", username); info.setProperty("password", passwd); //创建连接。 conn = DriverManager.getConnection(sourceURL, info); System.out.println("Connection succeed!"); } catch(Exception e) { e.printStackTrace(); return null; } return conn; } 常用参数详情请参见JDBC常用参数参考。
  • 驱动类 在创建数据库连接之前,需要加载数据库驱动类“org.postgresql.Driver”(对应包gsjdbc4.jar)。 由于GaussDB在JDBC的使用上与PG的使用方法保持兼容,所以同时在同一进程内使用两个JDBC的驱动的时候,可能会类名冲突。 本版本JDBC不再支持 IAM 认证功能。 相比于PG驱动,GaussDB JDBC驱动主要做了以下特性的增强: 支持SHA256加密方式登录。 支持对接实现sf4j接口的第三方日志框架。 支持连接级别的分布式负载均衡。 支持容灾切换。
  • 环境类 客户端需配置JDK1.8。JDK是跨平台的,支持Windows、Linux等多种平台,下面以Windows为例,介绍JDK配置流程: DOS窗口(windows下的命令提示符)输入“java -version”,查看JDK版本,确认为JDK1.8版本。如果未安装JDK,请下载安装包并安装。 在windows操作系统桌面中“此电脑”图标上单击右键,选择“属性”。 在弹出的“系统”窗口中,单击左侧导航栏中“高级系统设置”。 在弹出的“系统属性”窗口中,单击右下角的“环境变量”。 在弹出的“环境变量”窗口中的“系统变量”区域框中设置如下变量名和变量值。 变量名 操作 变量值 JAVA_HOME 若存在,则单击“编辑”。 若不存在,则单击“新建”。 JAVA的安装目录。 例如:C:\Program Files\Java\jdk1.8.0_131 Path 编辑 若配置了JAVA_HOME,则在变量值的最前面加上: %JAVA_HOME%\bin; 若未配置JAVA_HOME,则在变量值的最前面加上 JAVA安装的全路径: C:\Program Files\Java\jdk1.8.0_131\bin; CLASSPATH 新建 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar; 单击“确定”,并依次关闭各窗口。
  • JDBC包 从发布包中获取。包名为GaussDB-Kernel_VxxxRxxxCxx-操作系统版本号-64bit-Jdbc.tar.gz。 解压后JDBC的驱动jar包: gsjdbc4.jar:该驱动包适用于从PostgreSQL迁移业务的场景,驱动类和加载路径与迁移前保持一致,但接口支持情况不完全一致,未支持的接口需要业务侧进行调整。 opengaussjdbc.jar:主类名为“com.huawei.opengauss.jdbc.Driver”,数据库连接的url前缀为“jdbc:opengauss”,推荐使用此驱动包。如果遇到同一JVM进程内需要同时访问PostgreSQL及GaussDB的场景,请使用此驱动包。 各驱动包只是驱动类加载路径和url前缀不同,接口功能上相同。 jdbc发布件jar包按照架构分类,gscejdbc.jar包必须与对应的部署环境一致才能使用,其他jar包无需与部署环境一致。 gsjdbc200.jar:该驱动包适用于从Gauss200迁移业务的场景,驱动类和加载路径与迁移前保持一致,但接口支持情况不完全一致,未支持的接口需要业务侧进行调整。 不能使用gsjdbc4的驱动包操作PostgreSQL数据库,虽然部分版本能够建连成功,但部分接口行为与PostgreSQL JDBC不同,可能导致未知错误。 不能使用PostgreSQL的驱动包操作 GaussDB数据库 ,虽然部分版本能够建连成功,但部分接口行为与GaussDB JDBC不同,可能导致未知错误。
  • 驱动类 在创建数据库连接之前,需要加载数据库驱动类“org.postgresql.Driver”(对应包gsjdbc4.jar)。 由于GaussDB在JDBC的使用上与PG的使用方法保持兼容,所以同时在同一进程内使用两个JDBC的驱动的时候,可能会造成类名冲突。 本版本JDBC不再支持IAM认证功能。 相比于PG驱动,GaussDB JDBC驱动主要做了以下特性的增强: 支持SHA256加密方式登录。 支持对接实现sf4j接口的第三方日志框架。 支持连接级别的分布式负载均衡。 支持容灾切换。
  • 环境类 客户端需配置JDK1.8。JDK是跨平台的,支持Windows,Linux等多种平台,下面以Windows为例,介绍JDK配置流程: DOS窗口(windows下的命令提示符)输入“java -version”,查看JDK版本,确认为JDK1.8版本。如果未安装JDK,请下载安装包并安装。 在windows操作系统桌面中“此电脑”图标上单击右键,选择“属性”。 在弹出的“系统”窗口中,单击左侧导航栏中“高级系统设置”。 在弹出的“系统属性”窗口中,单击右下角的“环境变量”。 在弹出的“环境变量”窗口中的“系统变量”区域框中设置如下变量名和变量值。 表1 变量说明 变量名 操作 变量值 JAVA_HOME 若存在,则单击“编辑”。 若不存在,则单击“新建”。 JAVA的安装目录。 例如:C:\Program Files\Java\jdk1.8.0_131。 Path 单击“编辑”。 若配置了JAVA_HOME,则在变量值的最前面加上: %JAVA_HOME%\bin。 若未配置JAVA_HOME,则在变量值的最前面加上JAVA安装的全路径: C:\Program Files\Java\jdk1.8.0_131\bin。 CLASSPATH 单击“新建”。 %JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar。 单击“确定”,并依次关闭各窗口。
  • 环境类 客户端需配置JDK1.8。JDK是跨平台的,支持Windows、Linux等多种平台,下面以Windows为例,配置方法如下: DOS窗口(windows下的命令提示符)输入“java -version”,查看JDK版本,确认为JDK1.8版本。如果未安装JDK,请从官方网站下载安装包并安装。 根据如下步骤配置系统环境变量。 右键单击“我的电脑”,选择“属性”。 在“系统”页面左侧导航栏单击“高级系统设置”。 在“系统属性”页面,“高级”页签上单击“环境变量”。 在“环境变量”页面上,“系统变量”区域单击“新建”或“编辑”配置系统变量。变量说明如表1所示。 表1 变量说明 变量名 操作 变量值 JAVA_HOME 若存在,则单击“编辑”。 若不存在,则单击“新建”。 JAVA的安装目录。 例如:C:\Program Files\Java\jdk1.8.0_131。 Path 单击“编辑”。 若配置了JAVA_HOME,则在变量值的最前面加上: %JAVA_HOME%\bin。 若未配置JAVA_HOME,则在变量值的最前面加上 JAVA安装的全路径: C:\Program Files\Java\jdk1.8.0_131\bin。 CLASSPATH 单击“新建”。 %JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar。
  • 驱动类 在创建数据库连接之前,需要加载数据库驱动类“com.huawei.gaussdb.jdbc.Driver”。 由于GaussDB在JDBC的使用上与PG的使用方法保持兼容,所以同时在同一进程内使用两个JDBC驱动的时候,可能会造成类名冲突。 本版本JDBC不再支持IAM认证功能。 GaussDB JDBC驱动主要做了以下特性的增强: 支持SHA256加密方式登录。 支持对接实现sf4j接口的第三方日志框架。 支持连接级别的分布式负载均衡。 支持容灾切换。
  • 环境类 客户端需配置JDK1.8。JDK是跨平台的,支持Windows、Linux等多种平台,下面以Windows为例,介绍JDK配置流程: DOS窗口(windows下的命令提示符)输入“java -version”,查看JDK版本,确认为JDK1.8版本。如果未安装JDK,请下载安装包并安装。 右键单击“我的电脑”,选择“属性”。 在“系统”页面左侧导航栏单击“高级系统设置”。 在“系统属性”页面,“高级”页签上单击“环境变量”。 在“环境变量”页面上,“系统变量”区域单击“新建”或“编辑”,设置如下变量名和变量值。变量说明如表1所示。 表1 变量说明 变量名 操作 变量值 JAVA_HOME 若存在,则单击“编辑”。 若不存在,则单击“新建”。 JAVA的安装目录。 例如:C:\Program Files\Java\jdk1.8.0_131。 Path 单击“编辑”。 若配置了JAVA_HOME,则在变量值的最前面加上: %JAVA_HOME%\bin。 若未配置JAVA_HOME,则在变量值的最前面加上 JAVA安装的全路径: C:\Program Files\Java\jdk1.8.0_131\bin。 CLASSPATH 单击“新建”。 %JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar。 单击“确定”,并依次关闭各窗口。