dimanche 16 août 2015

SQlite: IllegalStateException:Could not execute method of the activity, while inserting a row

Im following a tutorial I want to insert a row into table while doing this Its run time fatal exception while inserting a row into database Its Helper database class: DatabasaeAdaptor.java

package com.example.sarahn.inserttable;

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

public class DatabaseAdaptor {

Helperdb helperdb;
DatabaseAdaptor(Context context){
    helperdb = new Helperdb(context);
}

public long insertdata(String name,String password){

    SQLiteDatabase db = helperdb.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(helperdb.NAME,name);
    contentValues.put(helperdb.PASSWORD,password);
    long id = db.insert(helperdb.TABLE_NAME,null,contentValues);
    return id;
}

static class Helperdb extends SQLiteOpenHelper
{
   private static final String DATABASE_NAME = "insert";
   private static final String TABLE_NAME = "table";
   private static final int DATABASE_VERSION = 1;
   private static final String UID = "_name";
   private static final String NAME = "user";
   private static final String PASSWORD = "pw";
   private static final String CREATE_TABLE = "CREATE TABLE  

"+TABLE_NAME+"("+UID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+NAME+"  

VARCHAR(255), "+PASSWORD+" VARCHAR(255));";
   private static final String DROP_TABLE = "DROP TABLE IF EXISTS"  

+TABLE_NAME;
   private Context context;


   //context, database name,
   public Helperdb (Context context) {
       super(context,DATABASE_NAME, null, DATABASE_VERSION);
       this.context= context;
       Message.message(context, "constructor called");
   }

   @Override
   public void onCreate(SQLiteDatabase db) {
       try {
           db.execSQL(CREATE_TABLE);
           Message.message(context, "OnCreate called");
       }catch (SQLException e)
       {
           Message.message(context, "" + e);
       }
   }

   @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int  

newVersion) {

       try {
           db.execSQL(DROP_TABLE);
           onCreate(db);
           Message.message(context, "Onupgrade called");
       }catch (SQLException e)
       {

           Message.message(context,""+e );
           Message.message(context, "Error");
       }

   }
 }
}

And its MainActivity.java

package com.example.sarahn.inserttable;

import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;


public class MainActivity extends Activity {
EditText username;
EditText password;
DatabaseAdaptor db;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    username =(EditText) findViewById(R.id.etname);
    password = (EditText) findViewById(R.id.etpass);


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is      

present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
public void adduser(View view)
{
    String user = username.getText().toString();
    String pass = password.getText().toString();
    long count =db.insertdata(user,pass);
    if(count<0)
    {
        Message.message(this,"Unsucessful");
    }else
    {
        Message.message(this,"Sucessfull");
    }


}
}

Aucun commentaire:

Enregistrer un commentaire