sql >> Database teknologi >  >> RDS >> Oracle

Hvordan skriver man arrays til en Oracle 10g XE db ved hjælp af iBatis?

Jeg har gjort med Mybatis3, burde være ens i de gamle iBatis ting. For at få JDBC-tingene, læs denne tråd . Det er en kæmpe tråd, men den er der. Se efter "ArrayDescriptor".

Dybest set skal du skrive en TypeHandler. Kald setArray i TypeHandler. Skulle være sådan noget i mybatis 3.x. Når du arbejder med en liste, skal du bare konvertere med toArray-metoden. Dette er et eksempel, hvor parameteren er en streng[].

import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;   
.....
public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException
{
 //null check?

   ArrayDescriptor desc = ArrayDescriptor.createDescriptor("STRARRAY ", ps.getConnection());
   ARRAY oracleArray = new ARRAY(desc, ps.getConnection(), parameter);
   ps.setArray(i, oracleArray);
}

og måske noget lignende i ibatis,

public void setParameter(ParameterSetter setter, Object parameter) throws SQLException
{
    ArrayDescriptor desc = ArrayDescriptor.createDescriptor("STRARRAY", setter.getPreparedStatement().getConnection());
    ARRAY oracleArray = new ARRAY(desc, setter.getPreparedStatement().getConnection(), parameter);
    setter.setArray(oracleArray);
}

Gør din du har bygget en type, som der står i den tråd.

dvs.

CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (255)

Sørg derefter for at henvise til typebehandleren i SQL-kortet.




  1. Der kræves tilladelse til at se listen over tabeller i Management Studio

  2. System.Data.OracleClient.OracleException:ORA-01036:ulovlig variabelnavn/nummer

  3. SAMLING 'utf8_general_ci' er ikke gyldig for CHARACTER SET 'latin1'

  4. 'datetime2' fejl ved brug af entity framework i VS 2010 .net 4.0