电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

数据库访问

来源:金蝶云社区作者:金蝶2024-09-2313

数据库访问

# 1 简介 数据库访问是平台提供的访问数据库的接口DB。它的基本用法与JDBC相似,但是它提供更加统一方便的接口。在使用DB访问数据库的时候统一使用KSQL语法。在苍穹系统中,支持每个应用使用独立的数据库,SQL在哪个数据库上执行是通过DBRoute来路由。DB屏蔽了物理数据库信息,用DBRoute对应具体的物理库,由mc的数据中心管理进行配置。DBRoute内置了常用的routeKey,也可以通过DBRoute.of("routeKey")来构造。表单的routeKey在设计时已自动指定,在同一个应用下的表单routeKey相同。 # 2 应用场景 在需要通过SQL访问的场景下必须使用DB来访问数据库。 # 3 接口说明 数据库访问DB相关接口定义和实现存在于bos-dbengine-1.0.jar中。对于使用者来说只需要调用kd.bos.db.DB类中的方法即可。 ## 3.1 接口列表 | 方法 | 说明 | | - | - | | query | 查询 | | queryDataSet | 查询(返回DataSet) | | update | 插入、更新或删除 | | execute | 执行任何类型的SQL | | executeBatch | 批量执行任何类型的SQL | | timeout | 设置超时时间 | | getDBType | 获取数据库类型 | | exitsTable | 判断表是否存在 | | exitsIndex | 判断表索引是否存在 | | getPrimaryKeys | 获取表主键 | | getFieldInfo | 获取表的字段信息 | | getIndexInfo | 获取表的索引信息 | | isXDBEnable | 是否启用了xdb引擎(水平分表) | | isSplittingReadEnable | 是否开启读写分离 | | isSplittingAutoReadWrite | 是否开启自动读写模式 | | getWrittenRouteKey | 获取当前事务已写的库路由标识 | ## 3.2 接口详情 ### query + **功能描述** 查询数据库操作。 + **方法** ```java public static <T> T query(DBRoute dbRoute, String sql, ResultSetHandler<T> rh) public static <T> T query(DBRoute dbRoute, String sql, Object[] params, ResultSetHandler<T> rh) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | dbRoute | DBRoute | 数据库路由 | | sql | String | 查询SQL语句 | | params | Object[] | SQL参数 | | rh | ResultSetHandler\<T> | jdbc结果集ResultSet处理器 | + **返回值** 返回ResultSet处理器返回的结果。 + **示例代码** ```java // 不带参数 String sql = "SELECT * FROM table;" DB.query(DBRoute.basedata, sql, rs -> { return rs.next(); }); // 带参数 String sql = "SELECT * FROM table WHERE fid=?;" DB.query(DBRoute.basedata, sql, new Object[]{"xxxxxxxx"}, rs -> { return rs.next(); }); ``` ### queryDataSet + **功能描述** 查询数据库操作(返回DataSet)。 + **方法** ```java public static DataSet queryDataSet(String algoKey, DBRoute dbRoute, String sql) public static DataSet queryDataSet(String algoKey, DBRoute dbRoute, String sql, Object[] params) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | algoKey | String | algo标识 | | dbRoute | DBRoute | 数据库路由 | | sql | String | 查询SQL语句 | | params | Object[] | SQL参数 | > 参数algoKey用于跟踪性能,当前执行的时间将被记录到指标系统。这个值,应能有效定位到代码, 如=类名+方法,至少含类名。 + **返回值** 返回DataSet数据集(它是根据查询结果ResultSet包装而来)。 + **示例代码** ```java // 不带参数 String sql = "SELECT * FROM table;" DataSet dataSet = DB.queryDataSet(this.getClass.getName(), DBRoute.basedata, sql); // 带参数 String sql = "SELECT * FROM table WHERE fid=?;" DataSet dataSet = DB.queryDataSet(this.getClass.getName(), DBRoute.basedata, sql, new Object[]{"xxxxxxxx"}); ``` ### update + **功能描述** 插入、更新或删除数据库操作。 + **方法** ```java public static int update(DBRoute dbRoute, String sql) public static int update(DBRoute dbRoute, String sql, Object[] params) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | dbRoute | DBRoute | 数据库路由 | | sql | String | 查询SQL语句 | | params | Object[] | SQL参数 | + **返回值** 更新数据的行数。 + **示例代码** ```java // 不带参数 String sql = "UPDATE t_xxx SET field=xxx WHERE fid=xxx;" DB.update(DBRoute.basedata, sql); // 带参数 String sql = "UPDATE t_xxx SET field=? WHERE fid=?;" DB.update(DBRoute.basedata, sql, new Object[]{"xxx", "xxx"}); ``` ### execute + **功能描述** 执行任何类型的SQL。 + **方法** ```java public static boolean execute(DBRoute dbRoute, String sql) public static boolean execute(DBRoute dbRoute, String sql, Object[] params) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | dbRoute | DBRoute | 数据库路由 | | sql | String | 查询SQL语句 | | params | Object[] | SQL参数 | + **返回值** 是否执行成功。 + **示例代码** ```java // 不带参数 String sql = "UPDATE t_xxx SET field=xxx WHERE fid=xxx;" DB.execute(DBRoute.basedata, sql); // 带参数 String sql = "UPDATE t_xxx SET field=? WHERE fid=?;" DB.execute(DBRoute.basedata, sql, new Object[]{"xxx", "xxx"}); ``` ### executeBatch + **功能描述** 批量执行任何类型的SQL。 + **方法** ```java public static boolean execute(DBRoute dbRoute, String sql, List<Object[]> paramsList) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | dbRoute | DBRoute | 数据库路由 | | sql | String | 查询SQL语句 | | paramsList | List<Object[]> | SQL参数列表 | + **返回值** 批量执行的数量。 + **示例代码** ```java String sql = "UPDATE t_xxx SET field=? WHERE fid=?;"; List<Object[]> paramsList = new ArrayList(); Object[] params = new Object[]{"xxx", "xxx"}; paramsList.add(params); int[] executeBatch = DB.executeBatch(DBRoute.basedata, sql, paramsList); ``` ### timeout + **功能描述** 设置查询超时时间。 + **方法** ```java public static QueryTimeout timeout(int seconds) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | seconds | int | 超时时间(秒) | + **返回值** 查询超时对象。 + **示例代码** ```java try(DB.timeout(10)) { DB.query(...);

数据库访问

# 1 简介数据库访问是平台提供的访问数据库的接口DB。它的基本用法与JDBC相似,但是它提供更加统一方便的接口。在使用DB访问数据库的时候...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信