neel
neel

Reputation: 5293

Adding values into SQLite using Android eclipse

i am very new in Android development.I am trying to create a database table in sqllite and add values to it. i use the following code

add.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
   <EditText
    android:id="@+id/nametxt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10" >
    <requestFocus />
</EditText>
 <EditText
    android:id="@+id/notxt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10" >
  </EditText>
  <Button
    android:id="@+id/addcontactBtn"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:onClick="addContacts"
   android:text="Add New" />
</LinearLayout>

DataBase.java

  public class DataBase extends SQLiteOpenHelper {
public static final String DETAILS = "Details";
public static final String DETAIL_ID = "_id";
public static final String DETAIL_NAME = "_name";
public static final String DETAIL_NO="_no";

private static final String DATABASE_NAME = "Details.db";
private static final int DATABASE_VERSION = 1;
// creation SQLite statement
private static final String DATABASE_CREATE = "create table " + DETAILS
        + "(" + DETAIL_ID + " integer primary key autoincrement, "
        + DETAIL_NAME +" text not null"+ DETAIL_NO + " text not null);";

public DataBase(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) {
            db.execSQL("DROP TABLE IF EXISTS " +DETAILS);
    onCreate(db);
}

}

Detail.java

  public class Detail {
private int id;
private String name;
private String number;
public long getId() {return id; }
public void setId(int id) {this.id = id;}
public String getName() {return this.name;}
public void setName(String name) {this.name = name;}
public String getNumber(){return this.number;   }
public void setnumber(String number){   this.number=number; }
  }

DetailOperations.java

    public class DetailOperations {
private DataBase dbHelper;
private String[] DETAILS_TABLE_COLUMNS = { DataBase.DETAIL_ID, DataBase.DETAIL_NAME,DataBase.DETAIL_NO };
private SQLiteDatabase database;
public DetailOperations(Context context) {
    dbHelper = new DataBase(context);
}
public void open() throws SQLException {
    database = dbHelper.getWritableDatabase();  }

    public void close() {       dbHelper.close();   }

public Detail addDetail(String name,String number) {
    ContentValues values = new ContentValues();
    values.put(DataBase.DETAIL_NAME, name);
    values.put(DataBase.DETAIL_NO, number);
    long detId = database.insert(DataBase.DETAILS, null, values);
    Cursor cursor = database.query(DataBase.DETAILS,
            DETAILS_TABLE_COLUMNS, DataBase.DETAIL_ID + " = "
                    + detId, null, null, null, null);
    cursor.moveToFirst();
    Detail newdetail = parseDetail(cursor);
    cursor.close();
    return newdetail;
}
private Detail parseDetail(Cursor cursor) {
    Detail d = new Detail();
    d.setId((cursor.getInt(0)));
    d.setName(cursor.getString(1));
    d.setnumber(cursor.getString(2));
    return d;
}         }

Add.java

    public class Add extends Activity {
private DetailOperations detailDBoperation;
@Override
public void onCreate(Bundle savedInstaceState){
    super.onCreate(savedInstaceState);
    setContentView(R.layout.add);
}
   public void addDetails(View view){
    detailDBoperation=new DetailOperations(this);
    detailDBoperation.open();
    EditText name=(EditText) findViewById(R.id.nametxt);
    EditText number=(EditText) findViewById(R.id.notxt);
    detailDBoperation.addDetail(name.getText().toString(), number.getText().toString());
    name.setText("");
    number.setText("");

}}

When i press on the "Add New" button i got the error Unfortunately App has been stopped and shows the previous page. i check in DDMS it shows database table is created, but values are not added in table.

LogCat shows

09-23 04:50:17.914: E/AndroidRuntime(10574): java.lang.IllegalStateException: 
Could not find a method addContacts(View) in the activity class com.example.experiments.Add for onClick handler on view class android.widget.Button with id 'addcontactBtn'

Upvotes: 0

Views: 932

Answers (3)

Srikanth Roopa
Srikanth Roopa

Reputation: 1790

Make Sure you have included the onClick for button:

<Button
    android:id="@+id/addcontactBtn"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:onClick="addContacts"
   android:text="Add New" 
android:onClick="addDetails"/>

Change the query to this: missing ',' after not null in query

 private static final String DATABASE_CREATE = "create table " + DETAILS
       + "(" + DETAIL_ID + " integer primary key autoincrement, "
       + DETAIL_NAME +" text not null, "+ DETAIL_NO + " text not null);";

Upvotes: 1

blackpanther
blackpanther

Reputation: 11486

Replace the following method/method signature public void addDetails(View view) with public void addContacts(View view) as that was the method defined in your layout XML configuration file as:

<Button
    android:id="@+id/addcontactBtn"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:onClick="addContacts" <!-- here -->
    android:text="Add New" />

Upvotes: 1

Alexis C.
Alexis C.

Reputation: 93872

You want to call the method addContacts (android:onClick="addContacts") and you called it addDetails(View view) in your activity.

Change public void addDetails(View view) with public void addContacts(View view)

Upvotes: 2

Related Questions