hi,
        I have began developing a dialect for working with

  Microsoft Access

using

  InfoZoom JDBC driver.

I hope it will be of some use. I do NOT claim that this will work in general; it just works for my current applications.

___________________________________________________________________________

in hibernate.properties I added:
## MSAccess

hibernate.dialect cirrus.hibernate.sql.MSAccessDialect
hibernate.connection.driver_class com.inzoom.jdbcado.Driver
hibernate.connection.url jdbc:izmado:IzmDllPath=E:\\cvs_out\\teamwork\\html\\WEB-INF\\lib\\IzmJniAdo.dll;Provider=MSDASQL;Driver={Microsoft Access Driver (*.mdb)};Dbq=e:\\cvs_out\\teamwork\\data\\teamwork_ol.mdb
hibernate.connection.username admin
hibernate.connection.password
here if you have a licensed version you will add in the url also
        
        IzmRoyaltyFree=[license number]

actually in my projects infozoom driver works also with hibernate on sql server.
___________________________________________________________________________

the dialect class

public class MSAccessDialect extends Dialect {

        public MSAccessDialect() {
                super();
                register( Types.BIT, "BIT" );
                register( Types.BIGINT, "INTEGER" );
                register( Types.SMALLINT, "SMALLINT" );
                register( Types.TINYINT, "TINYINT" );
                register( Types.INTEGER, "INTEGER" );
                register( Types.CHAR, "CHARACTER(1)" );
                register( Types.VARCHAR, "VARCHAR($l)" );
                register( Types.FLOAT, "FLOAT" );
                register( Types.DOUBLE, "DOUBLE PRECISION" );
                register( Types.DATE, "DATETIME" );
                register( Types.TIME, "DATETIME" );
                register( Types.TIMESTAMP, "DATETIME" );
                register( Types.VARBINARY, "VARBINARY($l)" );
                register( Types.NUMERIC, "DECIMAL(19,$l)" );

                getDefaultProperties().setProperty(Environment.OUTER_JOIN, "false");
                getDefaultProperties().setProperty(Environment.STATEMENT_BATCH_SIZE, NO_BATCH);
        }

        public String getAddColumnString() {
                return "add";
        }
        public String getNullColumnString() {
                return " null";
        }
        public boolean qualifyIndexName() {
                return false;
        }       
        public boolean supportsForUpdate() {
                return false;
        }

    public boolean supportsIdentityColumns() {
        return true;
    }
    public String getIdentitySelectString() {
        return "select @@identity";
    }
    public String getIdentityColumnString() {
        return "IDENTITY NOT NULL";
    }
        public String getNoColumnsInsertString() {
                return "DEFAULT VALUES";
        }
}

- in order to make SchemaUpdater  work I had to add in method "execute":

 connection.commit();

before

  connection.close();

I will test it more in the near future. bye, peterpumpkin

Reply via email to