DELPHI 开发JNI 之 JAVA 对象String 应用
前言:
DELPHI 的教程很多,在这里不加赘述,着重介绍JAVA里的常用对象的调用,
公司有这方面的功能需求,用了2天的时间研究了下JNI相关的东西.把我在研究过程中比较挠头的一些问题的解决方法发上来. 主要介绍 JAVA中常用对象的在开发JNI时候的应用.
String对象应用
在 JAVA 中 String 属于一个对象,JNI不能识别String 类型. 所以在用GetMethodID 等方法的时候,对于传入和传出参数类型为String 类型的函数 需要将数据类型定义为 Ljava/lang/String; 在DLEPHI 里 则对应的是 JString
例子:
ResultSet对象有个方法 String getString(String columnName) 这段代码执行的过程是 调用ResultSet 对象的 String getString(String columnName) 方法 获取字段 “cs_name” 的值 ,省略了一些初始化的过程.
Var
JVM: TJNIEnv;
RsObj : JOjbect; //为ReslutSet 对象
RsClass : JClass; //
Mid : JMethodID;
JFVS : jString ;
JTmpStr : jString;
Begin
JVM := TJNIEnv.Create(PEnv);
//RsObj 初始化过程省略
RsClass := JVM.GetObjectClass(RSOBJ); //获得RsObj的类
JTmpStr := JVM.StringToJString('cs_name'); // cs_name 为字段名
Mid := JVM.GetMethodID(RSClass,'getString','(Ljava/lang/String;)Ljava/lang/String;');
JFVS := JVM.CallNonvirtualObjectMethod(RSOBJ,RSClass,mid,[JTmpStr]);
End;