云服务器内容精选

  • 示例 示例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常用参数参考。
  • 示例 示例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 //以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。 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"; 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常用参数参考。
  • 功能介绍 本小节介绍了如何使用HQL创建内部表、外部表的基本操作。创建表主要有以下三种方式: 自定义表结构,以关键字EXTERNAL区分创建内部表和外部表。 内部表,如果对数据的处理都由Hive完成,则应该使用内部表。在删除内部表时,元数据和数据一起被删除。 外部表,如果数据要被多种工具(如Pig等)共同处理,则应该使用外部表,可避免对该数据的误操作。删除外部表时,只删除掉元数据。 根据已有表创建新表,使用CREATE LIKE句式,完全复制原有的表结构,包括表的存储格式。 根据查询结果创建新表,使用CREATE AS SELECT句式。 这种方式比较灵活,可以在复制原表表结构的同时指定要复制哪些字段,不包括表的存储格式。 在启用了安全服务的集群中执行如下操作,需要在数据库中CREATE权限,使用CREATE AS SELECT句式创建表,需要对SELECT查询的表具有SELECT权限。 目前表名长度最长为128,字段名长度最长为128,字段注解长度最长为4000,WITH SERDEPROPERTIES 中key长度最长为256,value长度最长为4000。以上的长度均表示字节长度。
  • JDBC开发流程 JDBC(Java Database Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问接口,应用程序可基于它操作数据。 GaussDB (DWS)库提供了对JDBC 4.0特性的支持,需要使用JDK1.6及以上版本编译程序代码,不支持JDBC桥接ODBC方式。JDBC开发应用程序的具体流程如下: 图1 采用JDBC开发应用程序的流程 表1 JDBC开发流程 步骤 描述 加载驱动 下载JDBC驱动并在程序中编译和加载。 连接数据库 通过JDBC驱动连接数据库。 执行SQL语句 应用程序通过执行SQL语句来操作数据库的数据。 处理结果集 不同类型的结果集有各自的应用场景,应用程序需要根据实际情况选择相应的结果集类型。 关闭连接 在使用数据库连接完成相应的数据操作后,需要关闭数据库连接。 父主题: 基于JDBC开发
  • 常用方法 表1 PGReplicationStream常用方法 方法名 返回值类型 描述 throws close() void 结束逻辑复制,并释放资源。 SQLException forceUpdateStatus() void 强制将上次接收、刷新和应用的 LSN 状态发送到后端。 SQLException getLastAppliedLSN() LogSequenceNumber 获取上次主机日志回放的LSN。 - getLastFlushedLSN() LogSequenceNumber 获取上次主机刷新的LSN,即当前逻辑解码推进的LSN。 - getLastReceiveLSN() LogSequenceNumber 获取上次接收的LSN(针对LSN序复制槽)或 CS N(针对CSN序复制槽)。 - isClosed() boolean 复制流是否关闭。 - read() ByteBuffer 从后端读取下一条WAL记录。如果读取不到,该方法阻塞I/O读。 SQLException readPending() ByteBuffer 从后端读取下一条WAL记录。如果读取不到,该方法不阻塞I/O读。 SQLException setAppliedLSN(LogSequenceNumber applied) void 设置应用的LSN。 - setFlushedLSN(LogSequenceNumber flushed) void 设置刷新的LSN(针对LSN序复制槽)或CSN(针对CSN序复制槽),在下次更新时发送至后端,用于推进服务端LSN(针对LSN序复制槽)或CSN(针对CSN序复制槽)。 - 本接口类不支持计划外ALT特性。
  • PGReplicationStream的继承关系 PGReplicationStream是逻辑复制的接口,实现类是V3PGReplicationStream,该类位于com.huawei.gaussdb.jdbc.core.v3.replication Package中,该类的声明如下: public class V3PGReplicationStream implements PGReplicationStream
  • 支持的API列表 DLI JDBC Driver支持的API列表如下,对可能与JDBC标准产生歧义的地方加以备注说明。 Connection API支持的常用方法签名: Statement createStatement() PreparedStatement prepareStatement(String sql) void close() boolean isClosed() DatabaseMetaData getMetaData() PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) Driver API支持的常用方法签名: Connection connect(String url, Properties info) boolean acceptsURL(String url) DriverPropertyInfo[] getPropertyInfo(String url, Properties info) ResultSetMetaData API支持的常用方法签名: String getColumnClassName(int column) int getColumnCount() int getColumnDisplaySize(int column) String getColumnLabel(int column) String getColumnName(int column) int getColumnType(int column) String getColumnTypeName(int column) int getPrecision(int column) int getScale(int column) boolean isCaseSensitive(int column) Statement API支持的常用方法签名: ResultSet executeQuery(String sql) int executeUpdate(String sql) boolean execute(String sql) void close() int getMaxRows() void setMaxRows(int max) int getQueryTimeout() void setQueryTimeout(int seconds) void cancel() ResultSet getResultSet() int getUpdateCount() boolean isClosed() PreparedStatement API支持的常用方法签名: void clearParameters() boolean execute() ResultSet executeQuery() int executeUpdate() PreparedStatement Set系列方法 ResultSet API支持的常用方法签名: int getRow() boolean isClosed() boolean next() void close() int findColumn(String columnLabel) boolean wasNull() get系列方法 DatabaseMetaData API支持的常用方法签名 ResultSet getCatalogs() 在DLI服务中没有Catalog的概念,返回空的ResultSet。 ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) Connection getConnection() getTables(String catalog, String schemaPattern,String tableNamePattern, String types[]) 该方法不采纳Catalog参数,schemaPattern对应DLI服务的database的概念。 ResultSet getTableTypes() ResultSet getSchemas() ResultSet getSchemas(String catalog, String schemaPattern)
  • JDBC开发流程 JDBC(Java Database Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问接口,应用程序可基于它操作数据。 GaussDB(DWS)库提供了对JDBC 4.0特性的支持,需要使用JDK1.6及以上版本编译程序代码,不支持JDBC桥接ODBC方式。JDBC开发应用程序的具体流程如下: 图1 采用JDBC开发应用程序的流程 表1 JDBC开发流程 步骤 描述 加载驱动 下载JDBC驱动并在程序中编译和加载。 连接数据库 通过JDBC驱动连接数据库。 执行SQL语句 应用程序通过执行SQL语句来操作数据库的数据。 处理结果集 不同类型的结果集有各自的应用场景,应用程序需要根据实际情况选择相应的结果集类型。 关闭连接 在使用数据库连接完成相应的数据操作后,需要关闭数据库连接。 父主题: 基于JDBC开发
  • CopyManager CopyManager是GaussDB(DWS) JDBC驱动中提供的一个API接口类,用于批量向GaussDB(DWS)集群中导入数据。 CopyManager的继承关系 CopyManager类位于org.postgresql.copy Package中,继承自java.lang.Object类,该类的声明如下: public class CopyManager extends Object 构造方法 public CopyManager(BaseConnection connection) throws SQLException 常用方法 表14 CopyManager常用方法 返回值 方法 描述 throws CopyIn copyIn(String sql) - SQLException long copyIn(String sql, InputStream from) 使用COPY FROM STDIN从InputStream中快速向数据库中的表加载数据。 SQLException,IOException long copyIn(String sql, InputStream from, int bufferSize) 使用COPY FROM STDIN从InputStream中快速向数据库中的表加载数据。 SQLException,IOException long copyIn(String sql, Reader from) 使用COPY FROM STDIN从Reader中快速向数据库中的表加载数据。 SQLException,IOException long copyIn(String sql, Reader from, int bufferSize) 使用COPY FROM STDIN从Reader中快速向数据库中的表加载数据。 SQLException,IOException CopyOut copyOut(String sql) - SQLException long copyOut(String sql, OutputStream to) 将一个COPY TO STDOUT的结果集从数据库发送到OutputStream类中。 SQLException,IOException long copyOut(String sql, Writer to) 将一个COPY TO STDOUT的结果集从数据库发送到Writer类中。 SQLException,IOException
  • javax.sql.PooledConnection javax.sql.PooledConnection是由连接池创建的连接接口。 表11 对javax.sql.PooledConnection的支持情况 方法名 返回值类型 支持JDBC 4 addConnectionEventListener (ConnectionEventListener listener) void Yes close() void Yes getConnection() Connection Yes removeConnectionEventListener (ConnectionEventListener listener) void Yes addStatementEventListener (StatementEventListener listener) void Yes removeStatementEventListener (StatementEventListener listener) void Yes
  • javax.naming.Context javax.naming.Context是连接配置的上下文接口。 表12 对javax.naming.Context的支持情况 方法名 返回值类型 支持JDBC 4 bind(Name name, Object obj) void Yes bind(String name, Object obj) void Yes lookup(Name name) Object Yes lookup(String name) Object Yes rebind(Name name, Object obj) void Yes rebind(String name, Object obj) void Yes rename(Name oldName, Name newName) void Yes rename(String oldName, String newName) void Yes unbind(Name name) void Yes unbind(String name) void Yes
  • javax.sql.ConnectionPoolDataSource javax.sql.ConnectionPoolDataSource是数据源连接池接口。 表9 对javax.sql.ConnectionPoolDataSource的支持情况 方法名 返回值类型 支持JDBC 4 getLoginTimeout() int Yes getLogWriter() PrintWriter Yes getPooledConnection() PooledConnection Yes getPooledConnection(String user,String password) PooledConnection Yes setLoginTimeout(int seconds) void Yes setLogWriter(PrintWriter out) void Yes
  • java.sql.Statement java.sql.Statement是SQL语句接口。 表8 对java.sql.Statement的支持情况 方法名 返回值类型 支持JDBC 4 close() void Yes execute(String sql) boolean Yes executeQuery(String sql) ResultSet Yes executeUpdate(String sql) int Yes getConnection() Connection Yes getResultSet() ResultSet Yes getQueryTimeout() int Yes getUpdateCount() int Yes isClosed() boolean Yes setQueryTimeout(int seconds) void Yes setFetchSize(int rows) void Yes cancel() void Yes 通过setFetchSize可以减少结果集在客户端的内存占用情况。它的原理是通过将结果集打包成游标,然后分段处理,所以会加大数据库与客户端的通信量,会有性能损耗。 由于数据库游标是事务内有效,所以,在设置setFetchSize的同时,需要将连接设置为非自动提交模式,setAutoCommit(false)。同时在业务数据需要持久化到数据库中时,在连接上执行提交操作。
  • javax.sql.DataSource javax.sql.DataSource是数据源接口。 表10 对javax.sql.DataSource接口的支持情况 方法名 返回值类型 支持JDBC 4 getConnection() Connection Yes getConnection(String username,String password) Connection Yes getLoginTimeout() int Yes getLogWriter() PrintWriter Yes setLoginTimeout(int seconds) void Yes setLogWriter(PrintWriter out) void Yes
  • java.sql.ResultSetMetaData java.sql.ResultSetMetaData是对ResultSet对象相关信息的具体描述。 表7 对java.sql.ResultSetMetaData的支持情况 方法名 返回值类型 支持JDBC 4 getColumnCount() int Yes getColumnName(int column) String Yes getColumnType(int column) int Yes getColumnTypeName(int column) String Yes