#include "test.h" jobject jdbc; jmethodID jdbcm_getConnection; void jdbc_init(void) { jobject local_jdbc; if (jdbc != NULL) { return; } local_jdbc = ej_CreateObject("JDBC"); check_exception(); if (local_jdbc != NULL) { jdbc = ej_NewGlobalRef(local_jdbc); } if (ej_ExceptionOccurred() && (jdbc != NULL)) { ej_DeleteGlobalRef(jdbc); jdbc = NULL; } } #define jdbc_loadDriver(classname) \ ej_CallVoidMethod(jdbc, ej_GetMethodIdObj(jdbc, "loadDriver", EJ_STRING_NO_RETURN), \ classname) #define jdbc_getConnection(url, userid, password) \ ej_CallObjectMethod(jdbc, \ ej_GetMethodIdObj(jdbc, \ "getConnection", \ "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;"),\ url, userid, password) /**********************************************************************************/ jobject conn; char *getConfig(char *env, char *def) { if (getenv(env)) { return (char *)getenv(env); } else { return def; } } void test_jdbc() { char *url; char *userid; char *password; jobject pst; jobject rs; int i; url = getConfig("JDBC_URL", "jdbc:postgresql://127.0.0.1:15432/ifm_spam"); userid = getConfig("JDBC_USERID", "userid"); password = getConfig("JDBC_PASSWORD", "password"); jdbc_init(); check_exception(); if (jdbc != NULL) { jdbc_loadDriver(ej_NewStringUTF("org.postgresql.Driver")); check_exception(); conn = jdbc_getConnection(ej_NewStringUTF(url), ej_NewStringUTF(userid), ej_NewStringUTF(password)); check_exception(); if (conn != NULL) { pst = Connection_prepareStatement(conn, ej_NewStringUTF("select * from scstrings")); check_exception(); rs = Statement_executeQuery(pst); i = 0; while (ResultSet_next(rs)) { printf("%d %s %s %s '%s'\n", i++, ej_GetStringUTFChars(ResultSet_getString(rs, 1), NULL), ej_GetStringUTFChars(ResultSet_getString(rs, 2), NULL), ej_GetStringUTFChars(ResultSet_getString(rs, 3), NULL), ej_GetStringUTFChars(ResultSet_getString(rs, 4), NULL) ); } check_exception(); } } } int main() { jint res; printf("Initializing JVM\n"); res = ej_init_jvm(); if (res == 0) { printf("JVM initialized\n"); test_jdbc(); } else { printf("Error initializing JVM : %d\n", res); } }