java 调用 windows com 组件的资料整理

应该说Java还是十分强大的,本身提供了jni来调用windows com 组件。
但是要使用好jni似乎没有想象的这么容易,要对c++很懂,部署起来比较麻烦。
一个开源的框架jawin简单的解决了这个问题,以下是本人整理的部分资料(来自于网上),并且调试通过。
http://jawinproject.sourceforge.net这是jawin的官方网站。
在网站上可以获取开发包,有源代码,也有打包好的,按个人需要。
   》将jawin.dll放于c:\winnt\system32下。否则将出现错误:COMException : no jawin in java.library.path;
     如果jawin.dll放在项目目录下,至少在eclipse下调试会通不过。
   》在Eclipse中,菜单->window->preference->Java->installed JREs 将原来的remove,重新建一个指到你的java sdk目录。
   》 ok了。
这样环境就算搭建完成了,然后就可以运行demos下面的例子,应该说里面的例子还是比较详细的,有调用word,ppt,excel等各种例子。
因为对ASP,C++这些不熟,一开始我迷茫了很久。。。。
后来总算找到了点方向,因为这次解决问题的重点是,模拟ASP中创建数据库连接,获取数据的方式。ASP里是用到了msado32.dll 这个文件。没有的话当然需要安装了。
以下是java中调用msado32.dll 连接MSSQL查询数据的例子:
Ole32.CoInitialize();
           DispatchPtr results = null;
           DispatchPtr connection = new DispatchPtr("ADODB.Connection");
           String sql_cn = "Provider=SQLOLEDB.1;Password=teldwno1;Persist Security Info=True;User ID=sa;Initial Catalog=PortalMeta;Data Source=134.96.33.18";
           connection.invoke( "Open", sql_cn );
           String sql = "select * from t_user_info";
           results = (DispatchPtr)connection.invoke("Execute", sql );
           int count = 0;
           while (!((Boolean) results.get("EOF")).booleanValue())
           {
              ++count;
              DispatchPtr fields = (DispatchPtr) results.get("Fields");
              int numFields = ((Integer) fields.get("Count")).intValue();
              for (int i = 0; i < numFields; ++i)
              {
                  DispatchPtr item = (DispatchPtr) fields.get("Item", new Integer(i));
                  System.out.println(item.get("Name") + ": " + item.get("Value"));
              }
              System.out.println();
              results.invoke("MoveNext");
           }
           Ole32.CoUninitialize(); //释放
比较怪异,但总算搞定了~~ 代码基本上还是很容易理解的,懂ASP的人应该一看就懂

你可能感兴趣的:(java,windows,jni,asp.net,asp)