1 package org.jinterop.dcom.test; 2 3 4 5 import java.net.UnknownHostException ; 6 7 import org.jinterop.dcom.common.JIException; 8 import org.jinterop.dcom.common.JISystem; 9 import org.jinterop.dcom.core.IJIComObject; 10 import org.jinterop.dcom.core.JIComServer; 11 import org.jinterop.dcom.core.JIProgId; 12 import org.jinterop.dcom.core.JISession; 13 import org.jinterop.dcom.core.JIString; 14 import org.jinterop.dcom.core.JIVariant; 15 import org.jinterop.dcom.win32.ComFactory; 16 import org.jinterop.dcom.win32.IJIDispatch; 17 import org.jinterop.dcom.win32.IJITypeInfo; 18 19 public class MSADO { 20 21 private JIComServer comServer = null; 22 private IJIDispatch dispatch = null; 23 private IJIComObject unknown = null; 24 private JISession session = null; 25 public MSADO(String address, String [] args) throws JIException, UnknownHostException 26 { 27 session = JISession.createSession(args[1],args[2],args[3]); 28 comServer = new JIComServer(JIProgId.valueOf(session,"ADODB.Connection"),address,session); 29 } 30 31 32 public void performOp() throws JIException, InterruptedException 33 { 34 unknown = comServer.createInstance(); 35 dispatch = (IJIDispatch)ComFactory.createCOMInstance(ComFactory.IID_IDispatch,unknown); 36 IJITypeInfo typeInfo = dispatch.getTypeInfo(0); 37 typeInfo.getFuncDesc(0); 38 39 dispatch.callMethod("Open",new Object []{new JIString("driver=Microsoft Access Driver (*.mdb);dbq=C:\\temp\\products.mdb"),JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM,new Integer (-1)}); 40 41 JIVariant variant[] = dispatch.callMethodA("Execute",new Object []{new JIString("SELECT * FROM Products"),new Integer (-1)}); 42 if (variant[0].isNull()) 43 { 44 System.out.println("Recordset is empty."); 45 } 46 else 47 { 48 IJIDispatch resultSet = (IJIDispatch)ComFactory.createCOMInstance(dispatch,variant[0].getObjectAsInterfacePointer()); 49 while(!resultSet.get("EOF").getObjectAsBoolean()) 51 { 52 JIVariant variant2 = resultSet.get("Fields"); 53 IJIDispatch fields = (IJIDispatch)ComFactory.createCOMInstance(dispatch,variant2.getObjectAsInterfacePointer()); 54 int count = fields.get("Count").getObjectAsInt(); 55 for (int i = 0;i < count;i++) 56 { 57 variant = fields.get("Item",new Object []{new Integer (i)}); 58 IJIDispatch field = (IJIDispatch)ComFactory.createCOMInstance(dispatch,variant[0].getObjectAsInterfacePointer()); 59 variant2 = field.get("Value"); 60 Object val = null; 61 if (variant2.getType() == JIVariant.VT_BSTR) 62 { 63 val = variant2.getObjectAsString().getString(); 64 } 65 if (variant2.getType() == JIVariant.VT_I4) 66 { 67 val = new Integer (variant2.getObjectAsInt()); 68 } 69 System.out.println(field.get("Name").getObjectAsString().getString() + " = " + val + "[" + variant2.getType() + "]"); 70 } 71 resultSet.callMethod("MoveNext"); 72 } 73 74 75 } 76 77 JISession.destroySession(session); 78 } 79 80 public static void main(String [] args) { 81 82 try { 83 if (args.length < 4) 84 { 85 System.out.println("Please provide address domain username password"); 86 return; 87 } 88 JISystem.setAutoRegisteration(true); 89 MSADO test = new MSADO(args[0],args); 90 test.performOp(); 91 } catch (Exception e) { 92 e.printStackTrace(); 94 } 95 } 96 97 98 99 100 101 } 102 | Popular Tags |