Pentaho Kettle二次开发(简单数据交换)之使用Kettle源码获取连接数据库模式(用户)信息、表、字段

上篇我们讲到DatabaseMeta.class这个类,用来配置数据库连接属性,今天介绍核心类Database.class。

Database.class为数据库连接类,与数据库相关联的所有直接操作方法均可以在这个类中找到,如:连接,断开连接,获取用户、模式、获取全部表,获取表全部字段+字段类型,提交操作,插入操作,更新操作等。

这个类值得大家去学习一下他对对数据库连接的封装,对数据库操作的封装。

Database还提供了一个不推荐的构造方法,可以直接使用DatabaseMeta对象来初始化Database。

直接上测试demo,简单介绍几个常用的方法。

            KettleEnvironment.init();
            transDemo = new KettleTransUtil();

            // 测试数据库连接
            Map param = new HashMap();
            param.put("name","测试数据库");
            param.put("server","localhost");
            param.put("type","Generic database");
            param.put("access","Native");
            param.put("database","dm");
            param.put("port","5236");
            param.put("username","SYSDBA");
            param.put("password","111111111");
            String xmll = transDemo.getDatabaseStr(param);
            DatabaseMeta databaseMeta = new DatabaseMeta(xmll);
            Database database = new Database(databaseMeta);
            // 打开连接
            database.connect();
            System.out.println("-----------testConnection--------------------------------");
            System.out.println(databaseMeta.testConnection());
            System.out.println("------------getTablenames--------");
            System.out.println(database.getTablenames()[0]);
            System.out.println("------------getTableMap--------");
            System.out.println(database.getTableMap().toString());
            System.out.println("------------getTableFields--------");
            System.out.println(database.getTableFields("sysdba.tbsys_code").getFieldNames()[0]);
            System.out.println("------------getTableFieldsMeta--------");
            System.out.println(database.getTableFieldsMeta("sysdba","tbsys_code"));
            // 关闭连接
            database.closeConnectionOnly();

其他的方法,如:

cancelQuery取消查询
setCommit设置提交 setAutoCommit设置自动提交 commit提交 commitLog提交日志
rollback回滚
prepareInsert预插入
insertRow插入行

等等,推荐直接去看源码,方法名很规范,简明知意。

 

你可能感兴趣的:(Kettle)