Reputation: 25
I got error "Column not found" any time i run the following code even though the column exist in my table. Am using access database, Appealing for help please
public class Trial1 {
public static void main (String[]args){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:SENSOR";
String user = "";
String pass = "";
Connection con = DriverManager.getConnection(url,user,pass);
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); //stmt代表資料庫連接成功
ResultSet rs = stmt.executeQuery("select MAX(LevelNum) from NList");
if (rs.next()){
int w = rs.getInt("LevelNum");
int x= 3;
double i = Math.pow(2, (w-x))-1;
System.out.printf("i is %f",i);}
stmt.close();
con.close();
}catch(Exception e)
{
System.out.println("Error" + e);
}
}
}
Upvotes: 2
Views: 8140
Reputation: 183
If you execute your query it will return max value available in table or null if no record exists with column name MAX(LevelNum) instead of LevelNum.
And in your code you are getting returned value using statement
rs.getInt("LevelNum")
whereas you should use MAX(LevelNum) or use aliasing like-
SELECT MAX(LevelNum) AS MAX_NUM FROM NList
rs.getInt("MAX_NUM")
Upvotes: 0
Reputation: 31397
Try this...
class Trial1 {
public static void main (String[]args){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:SENSOR";
String user = "";
String pass = "";
Connection con = DriverManager.getConnection(url,user,pass);
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("select MAX(LevelNum) as LEVELNUM from NList");
if (rs.next()){
int w = rs.getInt("LEVELNUM");
int x= 3;
double i = Math.pow(2, (w-x))-1;
System.out.printf("i is %f",i);}
stmt.close();
con.close();
}catch(Exception e)
{
System.out.println("Error" + e);
}
}
Upvotes: 0
Reputation: 26259
Assuming the error is when you get the result rather than when you execute the query, you probably need something like this instead
// ...
ResultSet rs = stmt.executeQuery("select MAX(LevelNum) as maxLevel from NList");
if (rs.next())
{
int w = rs.getInt("maxLevel");
// ... etc.
}
Upvotes: 3