Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PreparedStatement problem with setInt - pls help

0 views
Skip to first unread message

Monkeyman

unread,
Jun 27, 2001, 2:13:37 PM6/27/01
to
Can someone tell me what I'm doing wrong here?

When I run this code I get the following error:

java.lang.ArrayIndexOutOfBoundsException
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(JdbcOdbcPreparedStatement.java:1027)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(JdbcOdbcPreparedStatement.java:2788)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(JdbcOdbcPreparedStatement.java:775)
at com.veridian.hypergame.BeliefContext.create(BeliefContext.java:174)
at com.veridian.hypergame.Hypergame.createHypergame(Hypergame.java:352)
at com.veridian.hypergame.HypergameQueryFrame.newHypergame(HypergameQueryFrame.java:632)
at com.veridian.hypergame.HypergameQueryFrame.access$1200(HypergameQueryFrame.java:27)
at com.veridian.hypergame.HypergameQueryFrame$11.run(HypergameQueryFrame.java:599)
at java.lang.Thread.run(Thread.java:484)

Here is my code:

public int create( int hypergameId,String date)
{
int tableId = 0;
UtilSql sql = new UtilSql( getUserName(),getUserPassword());

try {
String name = "Belief Context 1 for Hypergame " + hypergameId;

// Create record for new belief context

PreparedStatement insertBeliefContext = null;

String beliefContextDbInsertPS =
"INSERT INTO BeliefContext "
+ "( "
+ "Name"
+ ",SetCount"
+ ",HypergameId"
+ ",DTG"
+ ") "
+ "VALUES"
+ "("
+ " '?'" // Name
+ ", ? " // Set Count
+ ", ? " // Hypergame Id
+ ",'?'" // DTG
+ ")" ;

try
{
insertBeliefContext =
sql.getConnection().prepareStatement(beliefContextDbInsertPS);
insertBeliefContext.setString(1,name);
insertBeliefContext.setInt(2,1); //Set Count

insertBeliefContext.setInt(3,hypergameId); /** Fails HERE
*/
insertBeliefContext.setString(4,date);

}
catch (Exception e)
{
e.printStackTrace ();
System.exit(0);
}

...

Thanks,

Monkeyman

Lee Fesperman

unread,
Jun 27, 2001, 5:38:16 PM6/27/01
to
Monkeyman wrote:
>
> Can someone tell me what I'm doing wrong here?
>
> When I run this code I get the following error:
>
> java.lang.ArrayIndexOutOfBoundsException
> ...

> String beliefContextDbInsertPS =
> "INSERT INTO BeliefContext "
> + "( "
> + "Name"
> + ",SetCount"
> + ",HypergameId"
> + ",DTG"
> + ") "
> + "VALUES"
> + "("
> + " '?'" // Name
> + ", ? " // Set Count
> + ", ? " // Hypergame Id
> + ",'?'" // DTG
> + ")" ;

Don't enclose your ? parameter in quotes.

However, the driver should never throw an ArrayIndexOutOfBoundsException. That is a bug.

--
Lee Fesperman, FFE Software, Inc. (http://www.firstsql.com)
===================================================================
* Check out Database Debunkings (http://www.firstsql.com/dbdebunk/)
* "The Forum Where Database Matters Are Set Straight"

Monkeyman

unread,
Jun 28, 2001, 9:13:45 AM6/28/01
to
Lee,

Thanks for your help.

Monkeyman

Chris Golledge

unread,
Jun 28, 2001, 11:34:03 AM6/28/01
to
Try losing the single quotes inside the double quotes at your parameter
markers, ?. Probably these are being interpreted as instructing the db to
insert the ? character rather than a placeholder for variable binding; so,
when the binding occurs through setString, you attempt to bind to the third
placeholder when driver thinks you only have two.

Luck


"Monkeyman" <monkey...@yahoo.com> wrote in message
news:ef004336.01062...@posting.google.com...

0 new messages