From: Pietro P. <de...@op...> - 2002-12-13 15:02:33
|
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 |
From: Gavin K. <ga...@ap...> - 2002-12-14 06:54:13
|
Thanks :) Have you tried running the Hibernate test suites to see how much = functionality can be supported on Access? ----- Original Message -----=20 From: Pietro Polsinelli=20 To: hib...@li...=20 Sent: Saturday, December 14, 2002 2:01 AM Subject: [Hibernate] microsoft access dialect hi, I have began developing a dialect for working with=20 Microsoft Access using=20 InfoZoom JDBC driver.=20 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:=20 ## MSAccess hibernate.dialect cirrus.hibernate.sql.MSAccessDialect=20 hibernate.connection.driver_class com.inzoom.jdbcado.Driver=20 hibernate.connection.url = jdbc:izmado:IzmDllPath=3DE:\\cvs_out\\teamwork\\html\\WEB-INF\\lib\\IzmJn= iAdo.dll;Provider=3DMSDASQL;Driver=3D{Microsoft Access Driver = (*.mdb)};Dbq=3De:\\cvs_out\\teamwork\\data\\teamwork_ol.mdb=20 hibernate.connection.username admin=20 hibernate.connection.password=20 here if you have a licensed version you will add in the url also=20 =20 IzmRoyaltyFree=3D[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" );=20 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; } =20 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=20 connection.close();=20 I will test it more in the near future. bye, peterpumpkin=20 |