java中怎么使用sqlite3.dll

时间:2022-07-08 23:04:55
sqlite3.dll中的声明是

int sqlite3_open(const char*, sqlite3**);

在c#中可以这样声明

[DllImport("sqlite3.dll", EntryPoint = "sqlite3_open",CallingConvention=CallingConvention.Cdecl)]
 public static extern int sqlite3_open(string  filename, out IntPtr db);

在delphi中声明是:

 SQLite3_Open: function(dbname: PAnsiChar; var db: pointer): integer; cdecl;

我想知道在java中怎么使用?谢谢了

10 个解决方案

#1


为什么要使用sqlite.dll?
直接使用JDBC就可以访问sqlite数据库

#2


引用 1 楼 inhibitory 的回复:
为什么要使用sqlite.dll?
直接使用JDBC就可以访问sqlite数据库

#3


正面寻求的话,不妨看看这个:
http://tvjody.iteye.com/blog/125643

#4


引用 1 楼 inhibitory 的回复:
为什么要使用sqlite.dll?
直接使用JDBC就可以访问sqlite数据库

我要使用别人的db,而且别人的db是经过加密的,只能调用它们封装的sqlite3.dll

#5


还有没有知道呀?

#6


友情帮顶,第一次见到sqlite.dll

#7


在c#中可以这样声明
    public static extern int sqlite3_open(string  filename, out IntPtr db);
可以看出  IntPtr 是一个特殊的 整形数据,所以应对与Java里面的可以用int 来应对,所以后续的工作就好做了。


public interface JnaUseSqlite3Dll extends StdCallLibrary {
//加载动态链接库,把库dll文件默认放到系统C盘window目录下的system32文件夹下
JnaUseSqlite3Dll instance = (JnaUseSqlite3Dll)Native.loadLibrary("sqlite3", JnaUseSqlite3Dll.class);
//对应动态链接库中的方法, 要注意的是 这里的方法必须要和链接库(dll文件)对应的方法名一致
public int sqlite3_open(String filename, int db);//db 

}


====================================
/**
 * 工具类
 * @author Administrator
 *
 */
public class Sqlite3Util {
    /**
     * 得到一个jna实例,调用dll动态链接库,
     * @return
     */
    public static JnaUseSqlite3Dll  getInstance() {
        return JnaUseSqlite3Dll.instance;
    }
    
    /**
     *
     * 
     */
    public static int sqlite3_open(String filename) {
        
int returnNum = getInstance().sqlite3_open(filename, 0);
        return returnNum;
    }
    
    
    public static void main(String[] args) {
         String filename="xxxxx";
         Sqlite3Util.sqlite3_open(filename);
    }
}

楼主可以试试,看看这个是否对你有所帮助

#8


好久的老帖子了,请问楼主解决了嘛?
告诉一下解决方式啊

#1


为什么要使用sqlite.dll?
直接使用JDBC就可以访问sqlite数据库

#2


引用 1 楼 inhibitory 的回复:
为什么要使用sqlite.dll?
直接使用JDBC就可以访问sqlite数据库

#3


正面寻求的话,不妨看看这个:
http://tvjody.iteye.com/blog/125643

#4


引用 1 楼 inhibitory 的回复:
为什么要使用sqlite.dll?
直接使用JDBC就可以访问sqlite数据库

我要使用别人的db,而且别人的db是经过加密的,只能调用它们封装的sqlite3.dll

#5


还有没有知道呀?

#6


友情帮顶,第一次见到sqlite.dll

#7


在c#中可以这样声明
    public static extern int sqlite3_open(string  filename, out IntPtr db);
可以看出  IntPtr 是一个特殊的 整形数据,所以应对与Java里面的可以用int 来应对,所以后续的工作就好做了。


public interface JnaUseSqlite3Dll extends StdCallLibrary {
//加载动态链接库,把库dll文件默认放到系统C盘window目录下的system32文件夹下
JnaUseSqlite3Dll instance = (JnaUseSqlite3Dll)Native.loadLibrary("sqlite3", JnaUseSqlite3Dll.class);
//对应动态链接库中的方法, 要注意的是 这里的方法必须要和链接库(dll文件)对应的方法名一致
public int sqlite3_open(String filename, int db);//db 

}


====================================
/**
 * 工具类
 * @author Administrator
 *
 */
public class Sqlite3Util {
    /**
     * 得到一个jna实例,调用dll动态链接库,
     * @return
     */
    public static JnaUseSqlite3Dll  getInstance() {
        return JnaUseSqlite3Dll.instance;
    }
    
    /**
     *
     * 
     */
    public static int sqlite3_open(String filename) {
        
int returnNum = getInstance().sqlite3_open(filename, 0);
        return returnNum;
    }
    
    
    public static void main(String[] args) {
         String filename="xxxxx";
         Sqlite3Util.sqlite3_open(filename);
    }
}

楼主可以试试,看看这个是否对你有所帮助

#8


好久的老帖子了,请问楼主解决了嘛?
告诉一下解决方式啊