Wat betekent de volgende Oracle-fout: ongeldige kolomindex

Ik heb de volgende foutmelding gehad tijdens het testen van een code:

SQLEXCeption: ongeldige kolomindex

Wat betekent dat precies?

Is er een online document uit dat uitlegt wat alle Oracle-foutcodes en verklaringen?


Antwoord 1, Autoriteit 100%

Als dat een SQLEXCeption is gegooid door Java, is het waarschijnlijk, het is waarschijnlijk omdat u probeert een waarde te krijgen van een resultaat, maar de index die u gebruikt, is niet binnen het bereik.

Misschien probeer je de kolom bij Index 3 van de resultatenset te krijgen, maar je hebt slechts twee kolommen die worden geretourneerd uit de SQL-query.


Antwoord 2, Autoriteit 18%

Het klinkt alsof u probeert SELECTeen kolom die niet bestaat.

Misschien probeer je ORDER BYeen kolom die niet bestaat?

Alle typefouten in uw SQL-instructie?


Antwoord 3, Autoriteit 15%

Gebruikte de Simplejdbctemplate van de lente, ik heb het toen ik dit probeerde te doen:

String sqlString = "select pwy_code from approver where university_id = '123'";
List<Map<String, Object>> rows = getSimpleJdbcTemplate().queryForList(sqlString, uniId);
  • Ik had een argument voor queryforlist die niet overeenstemt met een vraagteken in de SQL. De eerste regel had moeten zijn:

    String sqlString = "select pwy_code from approver where university_id = ?";
    

Antwoord 4, Autoriteit 13%

Ik heb ook dit type fout, het probleem is verkeerd gebruik van parameters om te verklaren, laten we zeggen dat je een query hebt, zoals deze

SELECT * FROM EMPLOYE E WHERE E.ID = ?

en voor het prepareStatement-object (JDBC) als u de parameters instelt zoals

preparedStatement.setXXX(1,value);
preparedStatement.setXXX(2,value)

dan resulteert dit in SQLException: Invalid column index

Dus ik heb die tweede parameterinstelling verwijderd om een statement te maken en daarna het probleem opgelost


Antwoord 5, autoriteit 4%

Ik had exact hetzelfde probleem bij het gebruik van Spring Security 3.1.0. en Oracle 11G. Ik gebruikte de volgende query en kreeg de ongeldige kolomindexfout:

<security:jdbc-user-service data-source-ref="dataSource"
                users-by-username-query="SELECT A.user_name AS username, A.password AS password FROM MB_REG_USER A where A.user_name=lower(?)"

Het bleek dat ik het volgende moest toevoegen: “1 as enabled” aan de query:

<security:jdbc-user-service data-source-ref="dataSource" users-by-username query="SELECT A.user_name AS username, A.password AS password, 1 as enabled FROM MB_REG_USER A where A.user_name=lower(?)"

Alles werkte daarna. Ik denk dat dit een bug kan zijn in het Spring JDBC-kernpakket…


Antwoord 6, autoriteit 4%

Ik had dit probleem bij het gebruik van een voorbereide verklaring. Ik heb niet genoeg “?” voor de “WAARDEN” Mijn eclips was gecrasht nadat ik het juiste bedrag had toegevoegd, en verloor die wijzigingen. Maar dat kwam pas in mij op als de fout toen ik door de SQL begon te kammen, zoals p.campbell suggereerde.


Antwoord 7, autoriteit 2%

de laatste sql-instructie is zoiets als:

select col_1 from table_X where col_2 = 'abcd';

Ik voer dit in mijn SQL IDE en alles is OK.

Vervolgens probeer ik deze verklaring op te bouwen met Java:

String queryString= "select col_1 from table_X where col_2 = '?';";
PreparedStatement stmt = con.prepareStatement(queryString);
stmt.setString(1, "abcd"); //raises java.sql.SQLException: Invalid column index

Hoewel de SQL-instructie (de eerste, liep tegen de database) citaten rond stringwaarden bevat, en ook afwerkingen met een puntkomma, mag de reeks die ik aan de voorbereidingen passeer geen citaten rond het wildcard-personage niet te bevatten? het eindigt met een halfpolum.

Ik heb net de tekens verwijderd die op witte achtergrond verschijnen

"select col_1 from table_X where col_2 =?‘; ";

om

te verkrijgen

"select col_1 from table_X where col_2 = ?";

(Ik heb de oplossing hier gevonden: https: // coderanch.com/t/424689/databases/java-sql-sceptlexception-invalid-column )


Antwoord 8

Ik had dit probleem in één oude toepassing die dynamisch voorbereide verklaring creëert.

String firstName;
StringBuilder query =new StringBuilder("select id, name from employee where country_Code=1");
query.append("and  name like '");
query.append(firstName + "' ");
query.append("and ssn=?");
PreparedStatement preparedStatement =new prepareStatement(query.toString());

wanneer het de waarde voor ssn probeerde in te stellen, gaf het een ongeldige kolomindexfout en ontdekte uiteindelijk dat het werd veroorzaakt doordat firstName ‘ binnen had; die de syntaxis verstoren.


Antwoord 9

Probeer deze oplossing eens, want ik zag uw fout:

Verwijder de enkele aanhalingstekens rond uw vraagteken, wat betekent dat als u uw gereserveerde parameters zoals (‘?’,’?’,’?’) heeft gebruikt, het er als volgt uit moet zien:

(?,?,?)

Other episodes