本篇文章主要介绍了"B/S技术开发桌面应用",主要涉及到方面的内容,对于SQLite感兴趣的同学可以参考一下:
B/S技术开发桌面应用随着HTML5规范的越来越完善,其功能也越来越强大,用来构建界面的代价远远小于传统桌面程序。笔者从事web开发多年,对B/S开发技术积累比...
②开源sqlite jdbc项目,依赖于sqlite3.dll
主要有两个,SQLite Wrapper by Christian 和 SQLite Xerial Driver
介绍参加
http://blog.sina.com.cn/s/blog_654337ca01016x4n.html
各自的优缺点在文章里面都有说。
我看了一下两者的源码,发现在SQLite Wrapper的源码中,以DriverManager.getConnection(dbUrl, "用户名", "密码")方式获取数据库连接时,他会先判断你有没有实现sqlite3_key函数,有的话就会去调用,从而解密数据库,我从此看到了一线希望。不过两者驱动自带的sqlite_jni.dll都是基于官方的sqlite3.dll通过jni封装而来,不带加密功能,需要自己编译生成带加密功能sqlite_jni.dll。两者对比,SQLite Xerial Driver编译环境要求较高,选择了编译SQLite Wrapper。
首先得先找到sqlite3_key函数的实现,在这里向大家推荐开源项目wxSqlite3。
https://sourceforge.net/projects/wxcode/files/Components/wxSQLite3/
下载后解压,wxSqlite3/sqlite3/secure/src目录就是带加密功能的sqlite3源码
然后按照SQLite Wrapper编译文档编译
http://www.ch-werner.de/javasqlite/
官方示例javasqlite3.mak入口文件是从sqlite源码生成sqlite3.lib再依赖于sqlite3.lib生成sqlite_jni.dll,但是你要真这么做你就死定了,一堆乱七八糟的错,能把你整崩溃,主要原因我猜是SQLite Wrapper更新慢,sqlite3和wxSqlite3更新快,下载最新版的wxSqlite3里面的sqlite3加密源码跟他的脚本不匹配。
我是从javasqlite3-dll.mak入口文件进行编译的,直接把wxSqlite3/sqlite3/secure/ase128下面生成好的带加密功能的sqlite3.lib拿过来,跳过从sqlite源码生成sqlite3.lib的步骤,从而生成sqlite_jni.dll和sqlite.jar,最终实现jdbc操作加密的db库。
至此,所有问题全部解决,java服务端主程序在jetty服务启动完成后调用独立浏览器当作客户端访问http://127.0.0.1:8080/,服务端主程序等待独立浏览器被用户关闭后退出。
打包之后,程序在xp,win7,win8,win10都可运行,当然,xp需装一下.net framework 3.5(VS2012及以后的VS版本无法安装在xp之上了,但是开发出来的dll和exe依然是可以选择兼容xp的,具体方法参见附件)。
最后提醒下,无论是jar包还是ikvm.net生成的dll,都可以被反编译,因此建议核心代码用ikvmc编译成exe并且对exe加密,不要全部用ikvmc编译成dll。
衷心感谢NW.js、Node.js、wxSqlite3、SQLite Wrapper以及SQLite Xerial Driver这些优秀的开源项目,世界有你们更精彩!
以上就介绍了B/S技术开发桌面应用,包括了方面的内容,希望对SQLite有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_413439_6.html