mardi 5 mai 2015

How to create a list view contains data from sqlite in android

I am newbie to sqlite in android i am creating an application in android that is to retrieve data from sqlite and display in list view. I did some code. But, I am getting an error called "java.lang.IllegalArgumentException: column '_id' does not exist".Please tell me how to fix it. Big Thanks in advance.

        fetch_database.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                progressGenerator.start(fetch_database);
                media_player = media_player.create(DatabaseListView.this, R.raw.retrievingfromdatabase);
                media_player.start();


                String[] from = {logindatabase_adapter.USER_NAME,logindatabase_adapter.USER_PASSWORD};
                int[] to = {R.id.txt_username,R.id.txt_pasword};
                cursor = logindatabase_adapter.feching_Data();
                cursoradapter = new SimpleCursorAdapter(DatabaseListView.this, R.layout.listcell, cursor, from, to);
                database_results.setAdapter(cursoradapter);
            }
        });

    }

This is my login database adapter:

public class LoginDataBaseAdapter 

    {
            //Database name
            static final String DATABASE_NAME = "MilanloginRegistration.db";
            static final int DATABASE_VERSION = 1;
            public static final int NAME_COLUMN = 1;
            // TODO: Create public field for each column in your table.
            // SQL Statement to create a new database.
            public static final String TABLE_NAME="MilanLoginregistration";
            public static final String ID="ID";
            public static final String USER_NAME="USERNAME";
            public static final String USER_PASSWORD ="PASSWORD";


            static final String DATABASE_CREATE = "create table "+TABLE_NAME+
                                         "( " +"ID"+" integer primary key autoincrement,"+"USERNAME text UNIQUE,"+USER_PASSWORD+" text); ";
            // Variable to hold the database instance
            public  SQLiteDatabase db;
            // Context of the application using the database.
            private final Context context;
            // Database open/upgrade helper
            private DataBaseHelper dbHelper;
            public  LoginDataBaseAdapter(Context _context) 
            {
                context = _context;
                dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
            public  LoginDataBaseAdapter open() throws SQLException 
            {
                db = dbHelper.getWritableDatabase();
                return this;
            }
            public void close() 
            {
                db.close();
            }

            public  SQLiteDatabase getDatabaseInstance()
            {
                return db;
            }



            public void insertEntry(String username,String password)
            {
               ContentValues newValues = new ContentValues();

                newValues.put("USERNAME",username);
                newValues.put("PASSWORD",password);

                // Insert the row into your table
                db.insert("MilanLoginregistration",null,newValues);
                ///Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show();
            }
            public int deleteEntry(String username,String password)
            {
                //String id=String.valueOf(ID);
                String where="USERNAME=?";
                int numberOFEntriesDeleted= db.delete("MilanLoginregistration", where, new String[]{username,password}) ;
               // Toast.makeText(context, "Number fo Entry Deleted Successfully : "+numberOFEntriesDeleted, Toast.LENGTH_LONG).show();
                return numberOFEntriesDeleted;
            }

            public Cursor feching_Data(){
                String[] columns = {USER_NAME,USER_PASSWORD};
                db = dbHelper.getWritableDatabase();
                Cursor cursor = db.query(TABLE_NAME, columns,null,null,null,null,null);
                return cursor;

            }
            public String getSinlgeEntry(String userName)
            {
                Cursor cursor=db.query("MilanLoginregistration", null, " USERNAME=?", new String[]{userName}, null, null, null);
                if(cursor.getCount()<1) // UserName Not Exist
                {
                    cursor.close();
                    return "NOT EXIST";
                }
                cursor.moveToFirst();
                String password= cursor.getString(cursor.getColumnIndex("PASSWORD"));
                cursor.close();
                return password;                
            }
            public String checkSinlgeEntry(String userName)
            {
                Cursor cursor=db.query("MilanLoginregistration", null, " USERNAME=?", new String[]{userName}, null, null, null);
                if(cursor.getCount()>=1) // UserName  Exist
                {
                    cursor.close();
                    return "NOT EXIST";
                }
                cursor.close();
                return "";              
            }
            public void  updateEntry(String user_name,String pasword)
            {
                // Define the updated row content.
                ContentValues updatedValues = new ContentValues();
                // Assign values for each row.  
                updatedValues.put("USERNAME", user_name);
                updatedValues.put("PASSWORD",pasword);


                String where="USERNAME = ?";
                db.update("MilanLoginregistration",updatedValues, where, new String[]{user_name});             
            }   
            /*public void Display(View v){
                Cursor c = db.rawQuery("select * from MilanloginRegistration", null);
                admin_settings_child.text_fetched_database_results.setText("");
                c.moveToFirst();
                do{
                    String username = c.getString(c.getColumnIndex("USERNAME"));
                    String password = c.getString(1);
                    admin_settings_child.text_fetched_database_results.append("USERNAME::-->"+username+"PASSWORD::-->"+password+"\n");

                }while(c.moveToNext());
            }*/
        }

This is my logcat:

05-05 11:59:39.111: E/AndroidRuntime(5109): FATAL EXCEPTION: main
    05-05 11:59:39.111: E/AndroidRuntime(5109): Process: com.developer.milanandroid, PID: 5109
    05-05 11:59:39.111: E/AndroidRuntime(5109): java.lang.IllegalArgumentException: column '_id' does not exist
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.widget.CursorAdapter.init(CursorAdapter.java:172)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.widget.CursorAdapter.<init>(CursorAdapter.java:120)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.widget.ResourceCursorAdapter.<init>(ResourceCursorAdapter.java:52)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:78)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at com.developer.milanandroid.DatabaseListView$1.onClick(DatabaseListView.java:50)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.View.performClick(View.java:4438)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.View.onKeyUp(View.java:8241)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.widget.TextView.onKeyUp(TextView.java:5682)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.KeyEvent.dispatch(KeyEvent.java:2664)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.View.dispatchKeyEvent(View.java:7665)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2035)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1505)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.app.Activity.dispatchKeyEvent(Activity.java:2418)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1962)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:3852)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3558)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3718)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2010)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1704)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1695)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:1987)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.os.MessageQueue.nativePollOnce(Native Method)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.os.MessageQueue.next(MessageQueue.java:138)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.os.Looper.loop(Looper.java:123)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at android.app.ActivityThread.main(ActivityThread.java:5017)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at java.lang.reflect.Method.invokeNative(Native Method)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at java.lang.reflect.Method.invoke(Method.java:515)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    05-05 11:59:39.111: E/AndroidRuntime(5109):     at dalvik.system.NativeStart.main(Native Method)

Aucun commentaire:

Enregistrer un commentaire