1 Overview

    com.diante.socmobclient.jni包含了cpp类与java类的映射。使用时,实例化相关类,调用其方法即可,例如:

        JCMQORecordsetC qy = new JCMQORecordsetC();

        qy.setServer(CRuntime.getServer());

        qy.deleteInstance();

    deleteInstance()方法是该包内所有类都有的方法,作用是释放掉对应的cpp对象,每个java对象使用完毕后必须调用这个方法

 

2 Summary

    JCSocServer class

        JCSocServer代表服务器连接,在程序生命周期中,主JCSocServer有且只有一个,不能中途释放掉,程序退出后再释放掉主JCSocServer,当需要使用JCSocServer对象时,通过CRuntime.getServer()来获取复制的JCSocServer,这个JCSocServer使用结束后需要释放(调用deleteInstance())

        Public Methods

            public long getPointer()

            获取java实例对应的cpp对象的指针地址

 

    JCMQORecordsetC class

        JCMQORecordset负责查询服务器上的数据库,需要在子线程中使用

        Public Constructors

            public JCMQORecordsetC()

        Public Methods

            public void setServer(JCSocServer server)

            设置该对象的服务器连接为server

 

            public void addSql(String key, String sql)   

            将sql语句添加到对key表的查询操作中,可多次调用

                key:表名

                sql:sql语句

 

            public boolean open()    

            执行查询操作,是耗时操作,需要在子线程中执行

                return true:查询成功 false:查询失败

           

            public int recordCount(String key)

            获取结果集中key表结果的行数

                key:表名

                return 行数

 

            public String field(String key, int index, String fieldName)

            获取结果集中,key表第index行的fieldName列的值

                key:表名

                index:行索引

                fieldName:列名

                return 列值

 

        用法实例:

            获取marm表中mandt列为600983的meinh列的内容

            private void getData(){

                new Thread(new Runable(){

                    @Override

                    public void run(){

                        JCSocServer server = CRuntime.getServer();// 获取服务器连接对象

                        JCMQORecordsetC qy = new JCMQORecordsetC();// 实例化JCMQORecordsetC

                        qy.setServer(server);// 设置服务器连接

                        String key = "marm";// 表名

                        String sql = "select * from marm where mandt=600983";// sql语句

                        String key2 = ...// 其他表

                        String sql2 = ...// 其他sql

                        ...

                        ...

                        qy.addSql(key, sql);// 添加查询语句

                        qy.addSql(key2, sql2);// 可添加多次

                        ...

                        ...

                        if(qy.open()){// 开始查询,耗时操作 true:查询成功 false:查询失败

                            int count = qy.recordCount(key);// 获取结果集中marm表数据行数

                            for(int i = 0; i < count; i++){// 遍历结果集

                                String ret = qy.field(key, i, "meinh");// 获取meinh列的值

                                System.out.println("meinh = " + ret);

                            }

                            int count2 = qy.recordCount(key2);// 其他表的行数

                            for(int i = 0; i < count2; i++){// 其他结果

                                ...

                            }

                            ...

                            ...

                        }

                        qy.deleteInstance();// 释放cpp对象

                        server.deleteInstance();// 复制的server用完要释放

                    }

                }).start();

            }       

 

    JCComTranC class

        在底层创建基础数据,系统设置、验证权限、取回账套等操作会用到,使用时也要调用setServer(JCSocServer server)方法

        Public Constructors

            public JCComTranC()

        Public Methods

            计量单位设置

           

 

            季节小类的设置

           

           

            仓库设置

           

           

           

 

           

           

           

           

           

           

           

           

           

           

           

            客户类型的设置

           

           

            会员级别设置

           

            供应商设置