JDBC - Oracle ArrayIndexOutOfBoundsException

oy
14

oracle tablodaki bir satır eklemek için çalışırken bir İstisna alıyorum. Ben kahin 11 ojdbc5.jar kullanıyorum bu i çalışıyorum sql olduğunu

INSERT IGNORE  INTO rule_definitions(RULE_DEFINITION_SYS,rule_definition_type,
rule_name,rule_text,rule_comment,rule_message,rule_condition,rule_active,
rule_type,current_value,last_modified_by,last_modified_dttm,
rule_category_sys,recheck_unit,recheck_period,trackable)
VALUES(RULE_DEFINITIONS_SEQ.NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)

ve i İstisna şu olsun. Herhangi bir yardım takdir edilecektir.

java.ljava.lang.ArrayIndexOutOfBoundsException: 15
oracle.jdbc.driver.OracleSql.computeBasicInfo de (OracleSql.java:950)
    oracle.jdbc.driver.OracleSql.getSqlKind de (OracleSql.java:623)
    oracle.jdbc.driver.OraclePreparedStatement de. (OraclePreparedStatement.java:1212)
    oracle.jdbc.driver.T4CPreparedStatement de. (T4CPreparedStatement.java:28)
    oracle.jdbc.driver.T4CDriverExtension.allocatePreparedStatement de (T4CDriverExtension.java:68)
    oracle.jdbc.driver.PhysicalConnection.prepareStatement de (PhysicalConnection.java:3059)
    oracle.jdbc.driver.PhysicalConnection.prepareStatement de (PhysicalConnection.java:2961)
    oracle.jdbc.driver.PhysicalConnection.prepareStatement de (PhysicalConnection.java:5874)
    org.jboss.resource.adapter.jdbc.WrappedConnection.prepareStatement de (WrappedConnection.java:232)
    com.gehcit.platform.cds.common.util.db.DBWrapper.executeInsertOracleReturnPK de (DBWrapper.java:605)
Oluştur 10/11/2008 saat 13:22
kaynak kullanıcı
Diğer dillerde...                            


7 cevaplar

oy
25

Oracle Metalink (Oracle'ın destek sitesinden - Not kimliği 736.273,1) ben bu fazla 7 konumsal parametreler ile PreparedStatement çağırdığınızda o JDBC adaptörü (11.1.0.7.0 sürüm 10.2.0.0.0) bir hata olduğu tespit ardından JDBC olacak Bu hatayı atmak.

Eğer Oracle Metalink erişiminiz varsa o zaman bir seçenek var gidip sözü yama indirmektir.

Başka bir çözüm geçici çözüm - yerine konumsal parametrelerin kullanılması adlandırılmış parametreleri:

INSERT IGNORE  INTO rule_definitions(RULE_DEFINITION_SYS,rule_definition_type,
rule_name,rule_text,rule_comment,rule_message,rule_condition,rule_active,
rule_type,current_value,last_modified_by,last_modified_dttm,
rule_category_sys,recheck_unit,recheck_period,trackable)
VALUES(RULE_DEFINITIONS_SEQ.NEXTVAL,:rule_definition_type,
:rule_name,:rule_text,:rule_comment,:rule_message,:rule_condition,:rule_active,
:rule_type,:current_value,:last_modified_by,:last_modified_dttm,
:rule_category_sys,:recheck_unit,:recheck_period,:trackable)

ve daha sonra kullanmak

preparedStatement.setStringAtName("rule_definition_type", ...)

vb Bu sorgu için adlandırılmış bind değişkenleri ayarlamak için.

Cevap 11/11/2008 saat 11:29
kaynak kullanıcı

oy
0

i mybatis + oracle + yayı + maven kullanıyorum. Aynı hata "ArrayIndexOutOfBoundsException", eğer parametreleri üzerinde 8 olan (veya).

pom olarak, ojdbc14 sürüm ojdbc6 değişti

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc14</artifactId>
        <version>10.2.0.3.0</version>
    </dependency>

İşe yaradı.

Cevap 20/07/2016 saat 09:23
kaynak kullanıcı

oy
0

Eğer oracle.jdbc.PreparedStatement sınıfına erişimi yoktur (ve yöntemler #setXXXAtName () desteklemez java.sql.PreparedStatement kullanmak zorunda kalıyor), adlandırılan parametreleri kullanmak için önerilen çözüm bir seçenek değildir .

zorunlu değerleri (Neyse ki az 7) geçirilecek için ben PreparedStatement ve GeneratedKeyHolder yaklaşımını kullandım ve oluşturulan birincil anahtar kalan değerler için basit bir SQL güncelleştirme sorunu döndü kullandık.

Cevap 06/07/2012 saat 11:10
kaynak kullanıcı

oy
0

Benim fare imleci sayma kapalı olmadıkça Evet, 15 sütunlara 16 değerlerini eklemek için çalışıyoruz.

Aynı şey SQLPlus * deneyin, ORA-00913 almalısınız: çok fazla değere

Cevap 10/11/2008 saat 14:55
kaynak kullanıcı

oy
0

Eğer parametrelerin yanlış sayısında geçen gibiler. Sen 15'te geçen gerektiğini ama ya 16 veya 14 yolluyorlar.

Cevap 10/11/2008 saat 14:51
kaynak kullanıcı

oy
0

i doğru anlama varsa, 15 tutucuları ile hazırlanmış deyimi oluşturun. Yani çağrıya 15 parametre değerleri ile bir dizi geçmesi gerekiyor. Belki bir tane cevapsız veya fazlalığı bir katma?

Cevap 10/11/2008 saat 13:35
kaynak kullanıcı

oy
0

kod görmeden, aklıma gelen tek şey, her bağlantı bir iş parçacığı güvenli bir şekilde erişildiğini kontrol etmektir. Oracle sürücüler genelde çok sağlam. Birden fazla iş parçacığı aynı bağlantı örneği erişen ve onunla tuhaf şeyler yapmaya alınca ben böyle garip iç hatalar gördüğüm tek zamandır. Onlar parçacığı güvenli değildir ve iplik başına bir tutulmalıdır.

Cevap 10/11/2008 saat 13:34
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more