0

hi to all i have a table that is named books and it has 4 columns (Titel, author,isbn, year)im using this query to call to check if there is the same isbn im trying to insert

Cursor c =db.query ("books", "isbn", 12344556 , null, null, null, null);

example: isbn im searching for = 12344556

and im geting also this error:

The method query(String, String, String, null, null, null, null) is undefined for the type DBAdapter

some help please.....??? how can i solve this problem im not sure how to define the method query....!!

this is the example that im trying to learn from .....

http://www.android10.org/index.php/articlesdatastorage/235-creating-and-using-databases-in-android-one

this is the DBAdapter.java

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBAdapter 
{
    public static final String KEY_ROWID = "_id";
    public static final String KEY_ISBN = "isbn";
    public static final String KEY_TITLE = "title";
    public static final String KEY_PUBLISHER = "publisher";    
    private static final String TAG = "DBAdapter";

    private static final String DATABASE_NAME = "books";
    private static final String DATABASE_TABLE = "titles";
    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_CREATE =
        "create table titles (_id integer primary key autoincrement, "
        + "isbn text not null, title text not null, " 
        + "publisher text not null);";

    private final Context context; 

    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;

    public DBAdapter(Context ctx) 
    {
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }

    private static class DatabaseHelper extends SQLiteOpenHelper 
    {
        DatabaseHelper(Context context) 
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) 
        {
            db.execSQL(DATABASE_CREATE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, 
        int newVersion) 
        {
            Log.w(TAG, "Upgrading database from version " + oldVersion 
                    + " to "
                    + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS titles");
            onCreate(db);
        }
    }    

    //---opens the database---
    public DBAdapter open() throws SQLException 
    {
        db = DBHelper.getWritableDatabase();
        return this;
    }

    //---closes the database---    
    public void close() 
    {
        DBHelper.close();
    }

    //---insert a title into the database---
    public long insertTitle(String isbn, String title, String publisher) 
    {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_ISBN, isbn);
        initialValues.put(KEY_TITLE, title);
        initialValues.put(KEY_PUBLISHER, publisher);
        return db.insert(DATABASE_TABLE, null, initialValues);
    }

    //---deletes a particular title---
    public boolean deleteTitle(long rowId) 
    {
        return db.delete(DATABASE_TABLE, KEY_ROWID + 
                "=" + rowId, null) > 0;
    }

    //---retrieves all the titles---
    public Cursor getAllTitles() 
    {
        return db.query(DATABASE_TABLE, new String[] {
                KEY_ROWID, 
                KEY_ISBN,
                KEY_TITLE,
                KEY_PUBLISHER}, 
                null, 
                null, 
                null, 
                null, 
                null);
    }

    //---retrieves a particular title---
    public Cursor getTitle(long rowId) throws SQLException 
    {
        Cursor mCursor =
                db.query(true, DATABASE_TABLE, new String[] {
                        KEY_ROWID,
                        KEY_ISBN, 
                        KEY_TITLE,
                        KEY_PUBLISHER
                        }, 
                        KEY_ROWID + "=" + rowId, 
                        null,
                        null, 
                        null, 
                        null, 
                        null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }

    //---updates a title---
    public boolean updateTitle(long rowId, String isbn, 
    String title, String publisher) 
    {
        ContentValues args = new ContentValues();
        args.put(KEY_ISBN, isbn);
        args.put(KEY_TITLE, title);
        args.put(KEY_PUBLISHER, publisher);
        return db.update(DATABASE_TABLE, args, 
                         KEY_ROWID + "=" + rowId, null) > 0;
    }
}
2
  • Can you post some more code? Your DBHelper class would be useful, as well as the code preceeding the 'Cursor c =' line. Commented Apr 6, 2011 at 2:02
  • show the exact message as it is in logcat and mention which line of your code is traced to cause the error. Commented Apr 6, 2011 at 4:55

2 Answers 2

1

This line:

The method query(String, String, String, null, null, null, null) is undefined for the type DBAdapter

suggests you are somehow calling query() on your DBAdapter object rather than the SQLiteDatabase object (Which is what I'm assuming you want to do).

Does the first line you posted correspond to the error you list? I'm skeptical because your third parameter is an int but the error lists it as a String.

Sign up to request clarification or add additional context in comments.

2 Comments

i agree with david. It seems you're trying to query from the DBAdapter. also, there is no function query for sqlitedatabase that takes a String as the first two parameters. Most likely you need to have a String[] as the second parameter.
what was the solution? You used the SQLiteDatabase object instead of the DBAdapter?
0

I think you want something along these lines:

String isbn = "12344556";
Cursor c = db.query(DATABASE_NAME, new String [] { 
    KEY_ISBN
    },
    KEY_ISBN + "='" + isbn + "'",
    null,
    null,
    null,
    null);

Then you can check the count and if greater than 0, your book exists.

if (c.getCount() > 0)
    //book exists
else
    //book does not exist

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.