     1 

        Java 

    Visual J++        
.       Visual J++  API, 
          
(Relational Database Management System). 
         API Data Access Object (DAO).  
 -,       Java/COM, 
    Java  Windows. 
    DAO API     Jet-   
  Microsoft,        
 Microsoft Access,    ISAM,     
 ODBC (Open Database Connectivity).  DAO API   . 
    Remote Data Object (RDO) API     -    
ODBC.  RDO ^_,,^,      
 .  RDO    
   ODBC   .   , 
   RDO-,  ,  
DAO-,       Jet- 
  . 
    DAO  RDO -.      
  (Jet Engine)  Microsoft,     
  .  DAO,  RDO    ODBC, 
  Microsoft      
Microsoft Windows.       Java/COM, 
          Microsoft Windows. 
     JavaSoft    API-   
   Java.   ODBC API  
-  Java Database Connectivity (JDBC) API  
   ,     Java.    
ODBC,       

    289 

    Java JD- (       
     ),   
  . JDBC API    
      Java.  ,   
 ,  DAO. 
    , ,   Visual J++,    
   API.  ,     
  Visual J++ -      RDAO 
.          
Internet. ,  Microsoft Developer Network (MSDN),  
     Visual C++  Visual Basic,  
     DAO  RDO,   - 
MSDN.      Visual Basic,   
    RDAO  .      API 
      Java. 
       JDBC API      
WWW-  JavaSoft.       ,  
          RDAO    
 .      JDBC API    
WWW-  JavaSoft http://splash.java-soft.com. 

        (DAO) 

      -,    --,  
      Jet-  
 .        Microsoft 
Access.         ,  
   Access (MDB-),    ISAM-,  
   ODBC. 
    ISAM-      ,    
 , ,     .  
   ISAM-    dBase, Paradox, FoxPro,  
     . Jet-  , 
      ,   MDB-  
.       ,   
    .     
   ,     
 ,    . 

    29	Visual J++:   

       ODBC      . ODBC 
  ,   Microsoft    
    Windows.     API  
         
.   ,    ,   
  ,  Oracle  SyBase,    ODBC 
  . Jet-   ""  
 ODBC  ,        
    .  Java  DAO   
   ,     
 Jet-  Microsoft. 
    DAO API     ,  
-        , 
  Java.  DAO  Database, DBEngine, Table, Query    
     . 

     Jet- 

    ,    Jet-   ,  , 
     .    
 Visual J++   Jet-  DLL, -  , 
       DAO. 
           Jet-  
.   Microsoft    
,     DAO-,   
WWW- http://www.micmsoft.com/accessdev/accwhite/qalicen.htm.  
 , ,   -, 
   Visual J++,       
Microsoft,  runtime- Jet-.    
 : Microsoft Access, Microsoft Excel, Microsoft Office, 
Visual Basic, Visual J++ (   ,    
). ,        , 
  Jet-   . 
    ,    RDO  JDBC    
.   ,     Jet- 
 ""   , , ,     
 .   ,       
       ,   ,  
  ,        
Microsoft,     ,    

     1.  8   Java	291 


       Java/COM   DAO 

       -,    Jet- 
   Microsoft.   7  ,  -  
   Java    Windows.  
-  Visual J++      "" 
,     Java  . 
      Java/COM      ,   
    Java.      Java 
Type Library Wizard.     Tools  Java Type Library Wizard  
    Type Library Wizard  , _. 
-     Java/COM.   
Microsoft DAO Object Library. 
       Java Type Library Wizard   
-   ,       7.   
      dao3032,  -   
  Windows (  Java\Trustlib\dao3032).   
   Java,    DAO-, , 
 -     (..    dao3032). 
         -. 

     DBEngine 

    -,  Jet-,   DBEngine.   
       .   
        . 
     DBEngine        
   .      OLE-, 
..  Java           
(.  7).  ,  ,   
   Jet-.      
,   . 
      ,    DBEngine  
  ,   getProperties()  
DBEngine.  DAO-     DBEngine- 
 Properties,      
java.util.Properties,    11. 
     Properties   DAOSample      VJ++ 
.  DBEngine      License Manager, 
 Jet-   . License Manager  
 ,     ,     . 

    292	Visual J++:   


    //   DBEngine    , import 
dao3032 ^DBEngine/import com.ms.com.*; 
    public class dao_dbengine { 
    //    DBEngine, static public _DBEngine create() { 
    //  . _DBEngine result; 
    //   License Manager. ILicenseMgr mgr = new LicenseMgr(); 
    //   License Manager   //  DBEngine. 
    result = (_DBEngine)mgr.createWithLic( 
    //    DBEngine, "mjgcqcejfchcijecpdhckcdjqigdejfccjri", 
    // CLSID  DBEngine. "(00025E15-0000-0000-COOO-000000000046)", 
    //   lUnknown* punkOuter. null, 
    //      //  . 
ComContext.INPROC_SERVER ) ; 
    return result; 
    } } 

        - Visual J++   DAOSample  
InfoViewer.   DBEngine-      
   . 
             
 ,     DBEngine.     
  LoginTimeout  Version    API-: 

    import dao3032.*; 
    public class DBEngineProperties { 
    public static void main(String!] astrArgs) { //  DBEngine. 


     1.  8   Java	293 


    _DBEngine engine = dao_dbengine.create(); 
    //   . System.out.println("Workspaces: Name, 
UserName"}; Workspaces workspaces = DBEngine.getWorkspaces(); for(int ii=0; 
ii<Workspaces.getCount() - 1; ii++) { 
    Variant var = new Variant(); 
    var.putlnt(ii); 
    Workspace wrksp = Workspaces.getltem(var) 
    System.out.println(" " + wrksp.getName() = ", " + 
    wrksp.getUserName()); ) 
    //   . 
    System.out.println("DBEngine.Version: " +  engine.getVersion()); 
    System.out.println("DBEngine.Timeout: " + 
    engine.getLogTimeout()); 
    //   . Properties props = engine.getProperties 
(); ror(int ii=0; ii<props.getCount(); ii++) { 
    Variant var = new Variant)); 
    var.putlnt (ii); 
    Property prop = Properties.getltem(var); 
    System.out.println("DBEngine. " + prop.getName() + 
    ": " + prop.getValue()); } 
    } 

          
-      . 
       ,   Workspace  Properties. 
    Samples.txt,  ,     
 .  ,    Tables, Queries, 
TableDefs, QueryDefs, Fields, Users, Groups   .    for 
       :  
  (  Variant)  getltemQ,  -  . 
       DAO  .    DAO-  
     getNameQ  Workspace  Properties. 
     getltemQ       
    ,   . 

     ,      

       DBEngine        
 ,      . 
       

    294	Visual J++:   

           . ( DAO  
       .  
         DAO.) 
              
setDefaultUser()  setDefaultPasswordQ  DBEngine.   
     Summary.txt,    Type Library 
Wizard     Java/COM.      
 ,     DAO (   WINDOWS\JAVA\TRUSTLIB\DAO3032). 
      DBEngine   openDatabaseQ, ,  ,  
 ,    openDatabaseQ  Workspace.   DBEngine 
      Database   , 
  .        , 
    . 

      

           
Jet-.      .    
 :    DBEngine,   
,         . 

       

      ,      
  DBEngine.  Workspace      
DBEngine.        
.         
 ,            
  . 
           
Create-WorkspaceQ  DBEngine.       
:    ,    
    . (     
      CreateUserQ  Workspace.)  
         : 

    public Workspace makeUserWorkspace(String strWorkspaceName) ( // 

  m_strUsername  m_strPassword //      
  , return m_dbengine.CreateWorkspace(strWorkspaceName, 

    m_strllsername, m_strPassword) ; 
    } 


     1.     Java	295 


         

              .  
     OpenDatabase()  Workspace.  
      ,     
  ,     
 ODBC.   OpenDatabaseQ : 

    public  Database OpenDatabase(String  strDBName,Variant  varFExclusive, 
    Variant  varFReadOnly,Variant varStrODBCSource); 

     strDBName      ISAM  MS Access, 
  ,     ODBC,   
  ODBC  Control Panel  Windows.  
 _   (""),   varStrODBCSource  
   "ODBC"...     
- ODBC,      
      ODBC.   ,   
 : 

    Workspace wspace  = m_dbengine.CreateWorkspace("UserSpace", 
    m_strUsername,   m_strPassword); 
    Variant varFExclusive =  new Variant (); varFExclusive.putBoolean(false); 
    Variant  varFReadOnly = new Variant(); varFReadOnly.putBoolean(false) ; 
    Variant  varStrODBCSource  =  new Variant(); 
varStrDBCSource.putString("ODBC") ; 
    Database myDB = wspace.OpenDatabase("",varFExclusive, 
    varFReadOnly,   varStrODBCSource); 

     varFExclusive   true,     
   .   OpenDatabaseQ  , 
          ,  
       ,      . 
     varFReadOnly   true,     
  ;          ,  
      false. 
        ODBC   
varStrODBCSource. ,       ODBC  
        . 
 varStrODBCSource   ,    strDBName 
 ^  . 

    296	Visual J++:   

    DAO-      DAO    
  MS Access.      CreateDatabaseO  
Workspace,        .   
   ,   .      
,         .  
     ,    
 .      . 
    : 

    Variant varStrDBFilename = new Variant (); Variant varNCollatingOrder(); 
Variant varOptions = new Variant(); 
    varStrDBFilename.putString(C:\\MyDB") ; 
    varNCollatingOrder.putint(Constants.dbSortGeneral) ; 
    varOptions.setlnt(Constants.dbEncrypt I Constants.dbVersion30); 
    Database myDB = m_workspace.CreateDatabase(varStrDBFilename, 
    varNCollatingOrder, varOptions); 

    Jet-    MDB-   MS Access. 
       CreateDatabaseO  
  ,      MS Access. 
       .    
,  locale,    Constants.   
     Constants.dbSortGeneral.  
   ,    
  , , ,   .   
summary.txt    dbSortATA'  locale. 
      varOptions    .  
 dao3032   Constants,      
,   static final integer.    , 
   "".     
varOptions    ,  "" Jet-  
   MS Access v3.0.     , 
      : 

    	 

    dbEncrypt	    
    dbVersionlO	   MS Access vl.O 
    dbVersion! 1	   MS Access vl.l 
    dbVersionlO	   MS Access v2.0 
    dbVersionSO	   MS Access v3.0 


     1.  8   Java	297 

        ,     . 
 dbVersionXX ,    MS Access  
.        . 
  Jet-    MS Access 3.0. 

        

           , 
   Databases.         
,       Java   
getXXXQ - Workspace.       
 -,    Databases: 

    dao3032.Databases  dbs  = myWorkspace.getDatabases(); 

       Databases   
 Enumeration   java.util:    
 .  Databases    ,  
  .  Count  Databases    
,    Databases.  getltemQ   
  ,    Variant,    
    Database,   . 
    ,    ,  : 

    //  ,     myWorkspace   . 
dao3032.Databases  dbs  = myWorkspace.getDatabases() ; 
    for(int  ii=0;   ii<dbs.getCount();   ii++)    { Variant  varlndex =  new 
Vatiant(); varlndex.putlnt(ii); dao3032.Database db = dbs.getltem(varlndex); 
    //    Database. 


     

         ,    
,     Databases.       
 Count,     ,   
getltem(),         .   
   getCount(),  : 
    public int getCount(); 
       getltemQ,       
 .      : 
    public <type> getltem(Variant varlndex); 


    298	Visual J+-H   

            .  
,  Databases    Database. ,  
  TableDefs    TableDef,   
 RecordSets    RecordSet.      
        (getCountQ  getltemQ),   
 ,   ,   getltemQ,   
 . 
            ,  
 .     Databases,  
    .       
   :   Databases   
Database,   RecordSets   RecordSet  .. 

     Databases  TableDefs 

          .    
 .        .   
     ,      . 
             TableDef. 
       , ,    
        . 
      TableDef,   ,    
,  TableDefs     Database.  
TableDef       TableDef   
   ,    Databases  Workspace,   
   getCount()  getltemQ. 

     TableDef 

     getFieldsQ  TableDef     
Field.   Field     (),   
.       TableDef.  Jet- 
  QueryDef,      .   
QueryDef,    TableDef,  .      
     DAO     
 RecordSet.       Field,    
    ,    . 
     getNameQ  Field     .   
Field    Fields       : 

    //  ,     myTabbleDef  ... 
    Fields   fids   =  myTableDef.getFields(); 
    //              Fields. 
    Variant  varl  =  new Variant(); 


     .     Java	299 


    varl.putlnt(0); 
    Field fl = flds.getField(O) ; 
    //    . String strName = f1.getName(); 
    //     "DOB". 
    var2 = new Variant(); 
    var2.putString)"DOB") ; 
    Field f2 = fIds.getField(var2) ; 

      ,     Field    
  . 
      .      
 Constants.  getAttributesQ  Field   
,         
 .         
 Field   Constants. 

      


     

    dbFixedField	   (    
 ). 
    dbVariableField	   (   ). 
    dbAutoIncrField	      

   ,    (    
 Jet-).       
  ()   . 

    dbUpdadableField	   . 
    dbDescending	     ( Z   

      100  0).     Field   Fields 
  Index.    ,     
    (   Z   0  100). 
    dbSystemField	  (  TableDe0,   
      ________________._________________________ 
            . 
,  dbDescending     . 
         .   
   ,   ,       
   .    . 

    import dao3032.*; 
    public class DatabaseFieldAttributes { 
    public static void main(String!] astrArgs) throws com.ms.com.ComException { 


    3OO Visual J++:   


    //         , 
if(astrArgs.length !=1) { 
    System.err.println("Usage Error:\n 
    jview DatabaseFieldAttributes <database-filename>"); System.exit(-1); 
    //   DBEngine   License Manager. 
    ILicenseM.gr mgr = new LicenseMgr () ; 
    _DBEngine dbeng = (_DBEngine) mgr.createWithLic ( "mjgcqcej 
fchcijecpdhckcdjqigdej fccj ri", "{00025E15-0000-0000-COOO-000000000046}", 
null, ComContext.INPROC_SERVER); 
    //  ,      // ,  
  . Variant vl = new Variant (); Variant v2 = new 
Variant(); Variant v3 = new Variant(); 
    vl.putBoolean(false); v2.putBoolean (false); v3.putString(""); 
    Database db = dbeng.OpenDatabase(astrArgs[0], vl, v2, v3) ; 
    //    TableDefs.    
    //      . 
    TableDef tds = db.getTableDefs() 
    for(int iTable = 0; iTable<tds.getCount(); iTable++) 
    { 
    TableDef tds = tds.getltem(iTable); System.out.println("Definition for 
table: " + td.getName()); 
    Fields fds = td.getFields(); 
    for(int iField=0; iField<fds.getCount(); iField++) 
    { 
    Field f = fds.getltem(iField); 
    System.out.print("\tField '" + f.getName() + "': "); 
    int attribs = f.getAttributes(); 
    boolean fFirstAttribPrinted = false; 
    if(0 != (attribs & Constants.dbFixedField)) 
    System.out.print("dbFixedField "); if(0 != (attribs & Constants.dbVariableField)) 
    System.out.print("dbVariableField "); if(0 != (attribs & Constants.dbAutoIncrField)) 
    System.out.print C'dbAutoIncrField ") ; if(0 != (attribs & Constants.dbUpdatableField)) 
    System.out.print("dbUpdatableField "); if(0 != (attribs & Constants.dbDescending)) 
    System.out.print("dbDescending ") ; 


     1.     Java	3O1 


    if (0 != (attribs & Constants .dbSystenj) ) 
    System.out.print("dbFixedField "); } System.out.printIn("\n"); 
    } 
    db.Close(); 
    } 
    } 


         

     CreateField()  TableDef     
     DAO.         
,   .       . 
  CreateFieldQ  TableDef  : 
    public  Field CreateField(Variant  varStrName,   Variant  varlntType, 
Variant  varlntSize); 
          Constants  dao3032. 
       . 

           

    dbBoolean	 .  VarlntSize . 
    dbByte	.  VarlntSize , 
    dblnteger	8- .  VarlntSize . 
    dbLong	32- .  VarlntSize . 
    dbCurrency        ,   ,   
 11          .  
Java  Variant.currencyVal()  64- . 
    dbSingle	   .  VarlntSize  
    dbDouble	     .  VarlntSize  
    dbDate	     ,   
 ,    30  1899  (,  
1,5   1  1900 ). 
    dbText	  String.  VarlntSize   
 . 
        ,  : dbLongBinaty, dbMemo  dbGUID. 
       ,        
TableDef.     DOB,    dbDate.     
         . 
    public void addDOBField(TableDef td)   throws  com.ms.com.ComException   { 
Variant  varStrName  = new Variant (); Variant varlntType  =  new Variant(); 


    302 Visual J++:   


    Variant varlntSize = new Variant(); 
    varStrName.putString("DOB"); varlntType.putlnt(Constants.dbDate); 
varlntSize.putlnt(0) ; 
    td.CreateField(varStrName, varlntType, varlntSize1) ; } 


     :    

       ,    OpenRecordSetQ  
TableDef    .       
 ,       .  
,    TableDef,      
Jet- (   MDB)  ISAM-. 
      OpenRecordsetQ  TableDef     
Variant.      Constants.dbOpenTable. ( 
         
 ,    OpenRecordsetQ  TableDef  
   dbOpenTable.) 
       Variant      . 
          
,   .       . 

     onunn       

    dbDenyWrite	 ,      
,        ,    
 . 
    dbDenyRead	 ,      
,        ,    
 . 
    dbReadOnly	        . 
      . 

      OpenRecordsetQ  TableDef  : 

    public Recordset OpenRecordset(Variant varlntType, 
    Variant  varlntOptions); 


        

     Recordset    .    
""     ,    
 .  Recordset      
.  MoveFirstQ, MovePrevQ, MoveNextQ  MoveLastQ   
    . 

     1.     Java	3O3 

      Visual J++   DAO ,   
       .   
  . 
       DAOSample    Sample Database, 
mdb.       Employees   . 
( TableDef.OpenRecordsetQ    .    
   Employees     Database. 
    ,      Tab/eDef.OpenRecordset().j 
        actionQ  DAOSample.  
       First, Next, Prev  Last. 
 actionQ     . 

    public boolean action(Event evt, Object what) { 
    //    First. 
    if (evt.target == m_first) 
    { 
    //    , recordset.MoveFirst(); 
    //  . m_form.showData(); 
    // , return true; 
    //    Prev. 
    if (evt.target == m_prev) 
    { 
    //    . 
    recordset.MovePrevious(); 
    //  . ra_form.showData() ; 
    // . 
    return true; } 
    //    Next, if (evt.target == m_next) { 
    //    . 
    recordset.MoveNext (); 
    //  . m_form.showData(); 
    //  , return true; 


    4	Visual J++:   


    //    Last. 
    if (evt.target == m_last) 
    { 
    //    . 
    recordset.MoveLast() ; 
    //  . m_form.showData(); 
    //  , return true; } 
    //   , return false; } 


          

    _|_ _]:[,   RecordSet   Field. 
  " Field     getFieldsO" 
 RecordSet.    Field   Fields  
     Recordset. 
            DOB   
Persons  . ,        
   ,   Java. 

    public void showDOBField(Database db) 
    throws com.ms.comComException { //    "Persons". Variant 
varStrPersons = new Variant (); varStrPersons.putstring("Persons"); TableDef 
td = db.getTableDefs().getltem(varStrPersons}; 
    //  Recordset  TableDef. Variant varlntType = new Variant (); 
Variant varStrOptions = new Variant 
    varlntType.putlnt(Constants.dbOpenTable); VarTrft"6ptidna,putlnt ^ _ 
    Recordset rs = td.OpenRecordse.t(varlntType, varlntOptions); 
    //      ... while(!rs.getEOF()) { 
    Variant varStrDOB = new Variant varStrDOB.putString("DOB"); double 
dCOMDate = 
    rs.getFields().getltem(varStrDOB).getValue(); //    
    Java.       * dCOMDate -= (365 * 70)  //    	[ 
    // 1970  1900 . +17  //  . 
    +1   //     12/30,    * I/  Java -  1/01. 


     1.     Java	3O5 


    dCOMDate *= MILLIS_PER_DAY; Date date = new Date(dCOMDate); 
    //    . 
    System.out.println("Next record's date: " + date); 
    //     Recordset, rs.MoveNext(); 
    } 
    } 


      

     Field        
    .  setValueQ  Field  
    .      ,  
Recordset       .  
         EditQ 
 Recordset. 
              
 UpdateQ  Recordset.      ,   
    .    
    : 
    1.     EditQ  Recordset,     
 ,   . 
    2.          setValue() 
  Field.   Field    
Fields  Recordset (  getFieldsQ). 
    3.         UpdateQ  Recordset. 

         

            
 SQL-     Jet-.    
    ,     . 
     QueryDef  SQL-     DAO.   
           
QueryDef.   QueryDef     
     . ,    
,     . ,    
       ,   .  
  QueryDef,     . 
        QueryDef   CreateQueryQ.  
    ,    Variant.  
   ,     .  

    6	Visual J++:   

       ,      
 .         
 Variant.        SQL. 
          SQL (Structured Query Language   
 ),     
    ,    .  
  Microsoft,     Jet-   
( Visual J++   Office),    SQL.  
       Microsoft Developer Network (MSDN). 
       ,    Query-Def  
 SQL-: 

    String  strSQL  =   "SELECT   DOB   from  Persons"; 
    //   ,       db     . Variant 
varStrName =  new Variant(); Variant varStrSQL = new Variant (); 
    varStrName.putString("SimpleSelectQuery"); 
    varStrSQL.putString(strSQL); 
    QueryDef  qd = db.CreateQueryDef(varStrName,   varStrSQL); 

       SQL-:   (delete),  
(append),  (update)   (select) ,     
 (table create).   ,     
  ,      .    
  DAO     ,   
  QueryDef. 
      QueryDef (     ),  
    ,       
,  SQL-. ,     
SimpleSelectQuery      DOB  Persons.  
     ,      
 (      "*"): 

    //     Recordset    QueryDef    //   
"SimpleSelectQuery"       . Variant varlntType =  new 
Variant(}; Variant varlntOptions  =  new Variant(); 
    varlntType.putlnt(Constants.dbOpenSnapshot); 
    varlntOptions.putlnt(0); 
    Recordset  rs  =  qd.OpenRecordset(varlntType,   varlntOptions); 


     1.     Java	3O7 


         

          OpenRecordsetQ   
Constants.dbOpenSnapshot.    Recordset     
  TableDef     
Constant.dbOpenTable,         
SQL-       . 
       (Dynaset)  .  
         
,     ,    
TableDef.  ,  ,   , 
      . ,  
     DOB-no-   Persons   
            
    ,  ,   , 
      . 
           (Snapshot) . 
,   ,      
.         
 . 
            
QueryDef.OpenRecordsetQ   , - 
 Recordset         
 : 

    varlntType.putlnt(Constants.dbOpenSnapshot} ; 
    varlntOptions.putlnt(0) ; 
    Recordset   rs   =  qd.OpenRecordset(varlntType,   varlntOptions); 

             QueryDef, 
  Constants.dbOpenDynaset     
QueryDef. OpenRecordsetQ: 

    va:IntType.putlnt(Constants.dbOpenDynaset); 
    varlntOptions.putlnt(0); 
    Recordset rs = qd.OpenRecordset(varlntType, varlntOptions); 
             
   EditQ  UpdateQ: 
    //     "DOB"   
    //     . 
    Field f = rs.getFields().getField("DOB"); 
    Variant varVal = f.getValue(); 
    varVal.putDoubleValue(varVal.getDouble() + 365.0); 
    f.setValue(varVal); 


    3O8	Visual J++:   


      QueryDef    

      ,        
,  DAO API.     ,  
 QueryDef     .    
aBTOMaTH4ecjCH_cr?yHOjEijjTj^^	    ". 
        QueryDef    "Simple-SelectQuery": 

    varStrName.putstring("SimpleSelectQuery") ; varStrSQL.putSt ring("SELECT 
DOB FROM Persons"); Querydef qd = db.CreateQueryDef(varStrName, varStrSQL); 

        QueryDef   ,   
    QueryDefs: ' " 

    QueryDefs qds = db.getQueryDefs(); qds.Append(qd); 
           QueryDef  ,  
    QueryDefs: 
    //    QueryDef. QueryDefs qds = 
db.getQueryDefs(); Variant varQueryName = new Variant(); 
varQueryName.putstring("SimpleSelectQuery") ; QueryDef qdSimpleSQL = qds.getltem(varQueryName); 
    //         
    //  . 
    Variant varlntType = new Variant(); 
    Variant varlntOptions = new Variant(); 
    varlntType.putint(Constants.dbOpenSnapshot); 
    varlntOptions.putlnt(0) ; 
    Recordset rs = qd.OpenRecordset(varlntType, varlntOptions) 


      

            .  
     SQL,     
"SELECT <fields>...",       .  
SQL-   ,       
.         
.           
  .        . 
    ,    SQL      
Persons,     DOB  36500 (  1910 ): 

    DELETE   FROM  Persons   WHERE   (DOB  <   36,500) 

     1.     Java	3O9 

     QueryDef    SQL-   ,    
   : 

    // ,   db  . 
    Variant varStrName = new Variant(); 
    Variant varStrSQL = new Variant(); 
    String strSQL = " DELETE FROM Persons WHERE (DOB < 36,500)"; 
    varStrName.Empty();  // ,  . varStrSQL.putString(strSQL); 
    Query Def qdDeleteQuery = db.CreateQueryDef(varStrName, varStrOptions); 

        ,      
    ,   ExecuteQ  
QueryDef.      ,  , 
   .       
.        API,   
   Constants  dao3032. 

           

    dbDenyWrite	       . 
    dblnconsistent	  . ,  
       "  "  
      ,   
   .    . 
    dbConsistent	   .  ,  
       "  "   
      ,   
   . 
    dbSQLPassThrough       SQL-   
  ODBC.    DAO  SQL- 
     ODBC,       
  .    -   . 
    dbFailOnError	      ,  
    .    . 
    dbSeeChanges	   ,   
  ,      
    . 

    310 Visual J++:   


      DAO 

            
DAO-     Java     .  
   DAO     ,    
      .   , 
 Jet-          
 .  ,    FoxPro ISAM,  
MDB- Jet-  ,      ODBC, 
    . Jet-    
    ,        
  . 
         ,   
 DAO.   DAO API   -^ 
      ODBC  RDO API. 

         (RDO) 

    RDO (Remote Data Objects)    OLE-. 
   Java/COM       
   ODBC. RDO   ,  
  DAO API,   Jet-   . 
          RDO: 
        DAO     Jet-. RDO  
 ""  -   API   ODBC (Open 
Database Connectivity)   Windows.  ,   
 ,   DAO,  RDO . 
 RDO,  ,       
  . 
        RDO        DAO , 
    ODBC API.    
   ,  ODBC   - 
API.        
 RDO  ODBC API. 
          RDO  Java-    
 .   DAO     
Jet-   ,    .   
    . ,   
,  RDO,      Win32,  
  ,  DAO,     
,     . 

     1.     Java	311 


       Java/COM  RDO 

     RDO   -,     
RDO-  Java      Java/COM. ( 
 7   Java/COM,     Java   
Windows.)       Java Type Library Wizard. 
         Visual J++.    
-    Microsoft Remote Data Object 1.0.  
      .       : 

    import msrdo32.*; 
    :\WIN95\SYSTEM\MSRD032.DLL(0.0) : warning J5008: method ... (error 
message) C:\WIN95\SYSTEM\MSRD032.DLL(0.0) : warning J5008: method ... (error 
message) C:\WIN95\java\trustlib\msrdo32\summary.txt (1): Class summary 
information created 

         .  ,   
RDO API   ,    (,   
-  ,   Java)    
 Java-.          . 
    " ,      import,   
      RDO-    
Java.  msrdo32    <win-dows>\Java\TrustLib\msrdo32. 
     RDO    
 Java. 

     rdoEngine 

     rdoEngine  RDO-     Java. 
       . -,  
    rdoEngine,  j-doEngihe.  
rdoEngine  ,  : 
    import msrdo32.*; //     . 
    //   start ()    main() ... _rdoEngine 
eng = (_rdoEngine)new rdoEngine(); 


     rdoEnvironment 

     DAO,   ,   Workspace,   
    Jet-  .   RDO, 
 rdoEnvironment,       
 . 

    312	Visual J++:   

              
 rdoEnvironment.  ,      
      ODBC ^ 
rdoEnvironment      !   
             , 
        ,   ,   
-       ,    
     . 
     rdoEnvironment      
   RDO.         
rdoEnvironment,            
   . 

     rdoEnvironment     rdoEnvironments 

       DAO,  RDO   ,   
API-.  ^)|8 rdEngine    
  rdoEnvironment .    rdoEngine 
   rdoEnvironment  .    
    ,       
rdoEnvironments,    Default_Environment.     
rdoEngine       rdoEnvironment,  : 

    import msrdo32.*; 
    _rdoEngine eng = (_rdoEngine)new rdoEngine(); rdoEnvironments envs = eng.getrdoEnvironments(); 
    Variant varlndex = new Variant(); 
    varlndex.putlnt(0); 
    rdoEnvironment env = envs.getltem(varlndex); 
    //  rdoEnvironment.      , //  
   : Variant varStrEnvName = new Variant(}; 
varStrEnvName.putString("Dsfault_Environment"); rdoEnvironment env = envs.getltem(varStrEnvName); 


      rdoEnvironment 

     rdoEnvironment    ,    
 .         
    getXXXQ  setXXXQ,    
Java/COM- rdoEnvironment.   rdoEnvironment,    
     . 

     1.     Java	313 


                     

    rdoDefaultCursorDriver	rdUselfNeeded           ODBC-. 
    rdoDefaultPassword	"" ,      
    ODBC,       . 
    rdoDefaultName	""  ,      
    ODBC,       . 
    rdoDefaultErrorThreshhold      -1	 ,   
      .    -1   
,    ,       
 . 
    rdoDefaultLoginTimeout	15 () ,    
   

       rdoEnvironment     
 .         
  rdoEnvironment  . 

       rdoEnvironment 

        rdoEnvironment   
CreateEnvironmentQ  _rdoEngine.      
  String:   (   rdoEnvironment  
 rdoEnvironments),        . 
           CreateEnviron-mentQ 
 rdoEnvironment      rdoEnvironments.  
  ,     CloseQ.   
  rdoEnvironment       . 

        

        ODBC     
rdoEnvironment.  RDO    rdoConnection.  , 
     ODBC,  
  rdoConnection. 

    314 Visual J++:   


          

             ODBC,   
  - ODBC    
Windows.      ODBC- ( 
       )    ODBC. 
             
OpenConnectionQ  rdoEnvironment.      
String,  ,     RDO    
   .        
rdoConnection   rdoConnections . rdoEnvironment. 
     ,    Variant, ,   
        
 ODBC.    ,     
  rdDriverNoPrompt.      
PromptConstants  msrdo32.   rdDriver Prompt  
        ODBC. 
         Variant ,   
    .  false   
      . 
         ODBC-,  
     Variant. 
          RDO Sample,    
Visual J++.   ,       ODBC  
 Sample Database   /,    
     ODBC. 

    Variant  vl,   v2,   v3; 
    //    . 
    vl.putlnt(PromptConstants.rdDriverNoPrompt); 
    v2.putBoolean(false); 
    v3.putString("DSN=Sample Database;UID=;PWD=; DATABASE=Sample Database"); 
    //      . 
    m_IConnection = m_IEnvironment.OpenConnection("" , vl, v2, v3) ; 


       

       rdoConnection     
rdoConnections,     rdoEnvironment.  
   rdoConnections    ,     
  .       
getltem()  ,      CloseQ. 

     1.     Java	315 


       RDO 

       DAO,  RDO      .  
       rdoResultset, 
  rdoConnection.OpenResultset(). 
     RDO     .    
 ,    QueryDef  DAO,   ,   
        rdoEnvironment.  
       .   
     ,       
 ,       
,    ,   OpenResultQ  rdoConnection. 
      OpenResultsetQ  .     
 String,   SQL-,    
 rdoResultset.         
rdoPreparedStatement  rdoTable.        
,       OpenRe-sult()  
rdoPreparedStatement  rdoTable.    . 
    ,   "". 
  ,  , ""    ,  
  ODBC   . 
        .     
~    ,      
 .       ResultsetType-Constants 
 msrdo32   .    
        . 

          

    RdOpenForwardOnly       rdoResultset  
,    .     , 
, ,      ( ). 
    RdOpenStatic	       
.     ,        
.       . 
    rdOpenKeyset	       
   .        .  
        .  , 
   ,     ,  
   . ,   ,  ,   
    ,     . 

    316 Visual J++:   


          

    rdOpenDynamic	  ,   ,   
     ,     
  ,    . ,   
   ,        ,  
  ,       , 
  . 

       OpenResultsetQ    Variant,  
  ,      
    .    
    LockTypeCon-stants  msrdo32. 
 rdConcurReadOnly   ,    rdoResultset 
   .  rdConcurLock    
 ( ), ,        
    . 
       OpenResultsetQ     
Variant.         
.        
rdAsynch Enable   OptionConstants.    
 . 

         

       DAO,        
^1!  .  rdoTables,   
getrdo-TablesQ  rdoConnection,     , 
   .  OpenResultQ  rdoTable  
 ,     . 
     OpenResultQ   ,     
     OpenResultsetQ  
rdo-Connection.  ,     , 
    ,     
     . 

        

        Recordset  DAO,      rdoResultset 
    .     
     MoveAXYQ  rdoResultset,  
: MoveFirstQ, MovePrevQ, MoveNextQ  Move-LastQ.  getBOFQ  
getEOFQ    ,     Recordset,  
 .    true,    
  (getBOFQ)   (getEOFQ) . 

     1.     Java 317 

            
getrdo-ColumnsQ  rdoResultset.    rdoColumns,  
 ,    rdoColumn,   
.        getValue()  rdoColumn. 
          , 
   DAO.    Edit()  
rdoResultset,      ,   
    .     rdoColumn.setValueQ 
   .      , 
   UpdateQ  Resultset. 

      JDBC 

        Java      JDBC (Java 
Database Connectivity),   JavaSoft.    DAO  RDO  
    Java , ,  
-.  DAO  RDO     Win32. 
      JDBC    Java,      
 ,    .  JDBC    
 API  Java 1.1,       Java 1.1,  
     WWW-. 
    JDBC API     ODBC.     
        
 Java.      ODBC,  ,   
,         JDBC. 
     JDBC API      ODBC,    
  JDBC   JDBC/ODBC.     
  ODBC    Java,   -.  
      " ,  
    ' -   
    Java. 
       JDBC API   JavaSoft    
 http:://splash.javasoft.com 

     

         Java    API,  
      .     
 ,        
  . 

    318	Visual J++:   

    DAO (Data Access Objects) API  -  Jet- 
  .     ,   
   .  Jet- , ,  
  ,       
,     .    Microsoft 
 runtime- Jet-,   ,     
,    DAO-  . 
    RDO (Remote Data Objects) API    ODBC API.   
RDO     ,   ODBC.  ODBC API  
 - ,   RDO- 
   .    RDO API  
       . 
    JDBC API  ,    Java. 
,  -       
Java    1.1.      ODBC API,  
,   ,     JDBC. 

