ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

ÎÒʵÏÖµÄÄÚ´æÊý¾Ý¿âJDBCÇý¶¯(Ò»)
2015-07-24 10:56:07 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:4´Î
Tags£ºÊµÏÖ ÄÚ´æ Êý¾Ý¿â JDBC Çý¶¯

ÎÒÈ¥Äê×öÁ˸öÄÚ´æÊý¾Ý¿â£¬×ÔÒÔΪ¹¦ÄܺÜÇ¿´ó¡£ÄÚ´æÊý¾Ý¿âÊǶÀÁ¢ÔËÐеijÌÐò£¬¿Í»§¶Ëͨ¹ýsocket·ÃÎÊ£¬´«ËÍSQLÓï¾ä²¢µÃµ½½á¹û£¬Îª´ËÎÒÌṩÁËÒ»¸öC½Ó¿ÚµÄ¿Í»§¶ËAPI¡£

µ«Èç¹ûÒª×öµ½¸üºÃµÄͨÓÃÐÔ£¬±ØÐëÕÕ¹ËITÊÀ½çÊýÁ¿×î¶àµÄÁ½ÀàÈË£ºjava³ÌÐòÔ±ºÍc#³ÌÐòÔ±¡£c#ÎÒµÄͬÊ·â×°ÁËado.netÇý¶¯¡£Õ⼸ÌìÎÒʵÏÖÁËjdbcµÄÇý¶¯£¬±¾ÎļǼʵÏÖ¹ý³ÌµÄһЩÐĵá£

±¾È˽ÏΪÉó¤µÄÊÇC/C++£¬¶ÔjavaµÄ?àÂÓ﷨ʵÔÚ²»Ì«¸Ðð£¬Ç°Õó×ÓÓÃjavaд¹ýÒ»¸ö¹æÄ£²»´óµÄandroid³ÌÐò£¬²Å¸ÒÌôսдһ¸öjdbcÇý¶¯µÄÈÎÎñ¡£

ÎҵĿª·¢»·¾³ÊDZȽÏСÖÚµÄmac os x£¬ÕýºÃ¿¼ÑéÒ»ÏÂjavaËùνµÄ¿çƽ̨¡£

µÚÒ»²½£¬ÏȽ«C½Ó¿ÚµÄ¿Í»§¶ËAPI·â×°³ÉÒ»¸öjavaÀࣺLxjDbApi.java

package com.lxjdb.jdbc;

public class LxjDbApi {
	public LxjDbApi(){
		System.loadLibrary("LxjDbJdbcApi");
	}
	
	public native long Open(String host, int port, String user, String pwd);
	public native void Close(long conn);
	
	public native int Exec(long conn, String sql, String[] dbInfo);  // Ö´ÐÐÒ»¸ösqlÓï¾ä
	
	public native int Rows(long conn);  // ×ÜÐÐÊý
	public native int Cols(long  conn);  // ×ÜÁÐÊý
	
	// µÃµ½ÁÐÐÅÏ¢
	public native int GetColInfoByIndex(long conn, int col, String[] retName, int[] lenTypePos);
	public native int GetColInfoByName(long conn, String name, int[] lenTypePos);
	
	public native int Next(long conn);  // µ½ÏÂÒ»Ìõ¼Ç¼£¬³É¹¦·µ»Ø1£¬µ½¼Ç¼¼¯½áÊø£¬ÔòΪ0£¬´íÎ󷵻ظºÊý
	
	public native int GotoRec(long conn, int recNo);  // ¼Ç¼ºÅ´Ó1¿ªÊ¼
	
	// È¡×Ö¶ÎÖµ£º1.×ÜÊÇ·µ»Ø×Ö·û´®½á¹û£¬2.×Ö·û´®±äÁ¿ÒªÔ¤ÏÈ·ÖÅäÖÁÉÙ2048´óСµÄ³¤¶È
	public native int LxjDbGetValByName(long conn, String fieldName, String[] retVal);
	
	// ÁбàºÅ´Ó0¿ªÊ¼
	public native int GetValByIndex(long conn, int col, String[] retVal);
}

È»ºóÓÃjavahÉú³É cÓïÑÔµÄÍ·ÎļþÀ´±àÒëjni£¬½«cÎļþ´æ·ÅÔÚjniĿ¼Ï£¬ÔÚÖÕ¶ËÏÂʹÓÃÃüÁîÐС£

javah -classpath bin -d jni com.lxjdb.jdbc.LxjDbApi

ÏÂÃæÊÇcpp´úÂ룬Êǵ÷ÓÃÎÒÃǵÄcÓïÑÔapi£º

/* DO NOT EDIT THIS FILE - it is machine generated */
#include "com_lxjdb_jdbc_LxjDbApi.h"
/* Header for class com_lxjdb_jdbc_LxjDbApi */
#include "LxjDbApi.h"

/*
 * Class:     com_lxjdb_jdbc_LxjDbApi
 * Method:    Open
 * Signature: (Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Ljava/lang/Long;
 */

JNIEXPORT jlong JNICALL Java_com_lxjdb_jdbc_LxjDbApi_Open
(JNIEnv * env, jobject obj, jstring host, jint port, jstring user, jstring pwd)
{
   LxjDbInit();

   const char* pHost = env->GetStringUTFChars(host, 0);
   const char* pUser = env->GetStringUTFChars(user, 0);
   const char* pPwd = env->GetStringUTFChars(pwd, 0);

   void* conn = LxjDbOpen(pHost, port, "", pUser, pPwd);

   env->ReleaseStringUTFChars(host, pHost);
   env->ReleaseStringUTFChars(pwd, pPwd);
   env->ReleaseStringUTFChars(user, pUser);
   return((jlong)conn);
}

/*
 * Class:     com_lxjdb_jdbc_LxjDbApi
 * Method:    Close
 * Signature: (Ljava/lang/Long;)Ljava/lang/Long;
 */
JNIEXPORT jint JNICALL Java_com_lxjdb_jdbc_LxjDbApi_Close
(JNIEnv * env, jobject obj, jlong conn)
{
   void* pConn = (void*)conn;
   int ret = LxjDbClose(pConn);
   return(ret);
}

/*
* Class:     com_lxjdb_jdbc_LxjDbApi
* Method:    Exec
* Signature: (JLjava/lang/String;[Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_com_lxjdb_jdbc_LxjDbApi_Exec
(JNIEnv * env, jobject obj, jlong conn, jstring sql, jobjectArray dbInfo)
{
   void* pConn = (void*)conn;
   const char* pSql = env->GetStringUTFChars(sql, 0);
   int retCode = 0;
   char pDbInfo[512];
   pDbInfo[0] = '\0';

   int ret = LxjDbExec(pConn, pSql, retCode, pDbInfo);

   env->ReleaseStringUTFChars(sql, pSql);

   env->SetObjectArrayElement(dbInfo, 0, env->NewStringUTF(pDbInfo));

   return(ret>0 ? retCode : ret);
}

/*
* Class:     com_lxjdb_jdbc_LxjDbApi
* Method:    Rows
* Signature: (J)I
*/
JNIEXPORT jint
Ê×Ò³ ÉÏÒ»Ò³ 1 2 3 4 5 ÏÂÒ»Ò³ βҳ 1/5/5
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºÎªÊ²Ã´²»¼Ç¼Âý²éѯ£¿ ÏÂһƪ£ºwindowsÏÂsqlplus/assysdba±¨ora-..

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)