• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 253
  • Last Modified:

What does this error means?

This is my code to access an MS-ACCESS database in java

private static boolean prepareStationCodeNameTable(){
        Statement stmt; // SQL statement object
        String query;   // SQL select string
        ResultSet rs;   // SQL query results

        ArrayList contentTypes = new ArrayList();
        query = "SELECT st-code, st-name from station";
       
        try {
            stmt = con.createStatement();
            rs = stmt.executeQuery(query);
            while(rs.next()){
                stationCodeMap.put(rs.getString("st-code"),rs.getString("st-name"));
            }
            System.out.println("--- Prepared Station Code and Name Map. Total Records are : " + stationCodeMap.size());
            return true;
        }catch(SQLException ex){
            ex.printStackTrace();
        }
        return false;
    }


BUT i am getting this error:

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 3.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
      at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
      at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3065)
      at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
      at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
      at Import.prepareStationCodeNameTable(Import.java:295)
      at Import.main(Import.java:59)
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause.
      at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
      at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
      at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3065)
      at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
      at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
      at Import.prepareMentorHorizonTable(Import.java:317)
      at Import.main(Import.java:65)


any clue?
0
jaipur07
Asked:
jaipur07
  • 6
  • 3
  • 2
  • +2
3 Solutions
 
girionisCommented:
It means that your SELECT statement is not syntactically correct. It is posible that the ODBC bridge does not support all the SQL statements.
0
 
jaipur07Author Commented:
whats wrong in this select statement? you see it in my post?
0
 
girionisCommented:
> SELECT st-code, st-name from station

Make sure that you refer to the proper variables and tables in the database.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
jaipur07Author Commented:
of course I am there are only 2 fields in this table and i am accesing both
0
 
girionisCommented:
DO the "st-code" and "st-name" exist in the table "station"? Does the table station exist? Also, not sure if it helps, but what happens if you take the minus signs off the table names?
0
 
hiteshgupta1Commented:
>>    query = "SELECT st-code, st-name from station";
is ur table name correct??
Can u use  try and catch to know which block is creating error?
0
 
astorerCommented:
Is "st-code" a valid column name in SQL?  I think it is not.  

the "-" is bad.
0
 
hiteshgupta1Commented:
ohhhh
u r already using try and catch!!
0
 
girionisCommented:
Also check if the path of the database you are accessing contains a dot (".").

http://support.microsoft.com/kb/171899/
0
 
jaipur07Author Commented:
i tried select * from station
and then i am getting values like

String code = rs.getString("st-code");

working fine nowwww
0
 
girionisCommented:
This SELECT st-code, st-name from station should also work.
0
 
objectsCommented:
try:

        query = "SELECT [st-code], [st-name] from station";
0
 
astorerCommented:
> SELECT st-code, st-name from station should also work.

No it shouldn't in standard SQL.  What you are asking for is values for
  st minus code
  st minus name

Access may allow you to define such column names but grown up databases would not.
0
 
girionisCommented:
If they are defined I cannot see why they cannot be accessed. If they are not to be accessed then why does a databaselet you define them?
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 6
  • 3
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now