2015-09-25 76 views
1

问题是如何显示来自用户标识的数据。如何更新和删除SQLiteOPENHELPER中MainActivity中的表格数据

我创建了一个数据库的学生与字段名称,姓氏,标记和我没有插入和查看Sucesfully,但我不知道如何做更新和删除请帮助。在这里,我想基于ID我做了一个更新coading在DAbaseclas但是当我要在MainActivity宣布我得到一个错误在这里,我附上图片

我的数据库处理器类

public class DatabaseHandler extends SQLiteOpenHelper { 

private static final String DATABASE_NAME="students.db"; 
private static final String TABLE_NAME="student_table"; 
private static final String COL_1="ID"; 
private static final String COL_2="NAME"; 
private static final String COL_3="SURNAME"; 
private static final String COL_4="MARKS"; 
private static final int DATABASE_VERSION=1; 


public DatabaseHandler(Context context) { 
    super(context,DATABASE_NAME, null, DATABASE_VERSION); 
} 
@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("Create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,SURNAME TEXT,MARKS INTEGER)"); 
    Log.d("oncreate","Table Was Created"); }@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
db.execSQL("DROP TABLE IF EXIST " + TABLE_NAME); 
    onCreate(db); 

} 
public boolean insertdata(String name,String surname,String marks) 
{ 
    SQLiteDatabase db=this.getWritableDatabase(); 
    ContentValues contentValues= new ContentValues(); 
    contentValues.put(COL_2,name); 
    contentValues.put(COL_3,surname); 
    contentValues.put(COL_4,marks); 
    long result=db.insert(TABLE_NAME,null,contentValues); 
    if (result==-1) 
     return false; 
    else 
     return true; 
} 
public Cursor getalldata(){ 
    SQLiteDatabase db=this.getReadableDatabase(); 
    Cursor res=db.rawQuery("SELECT * FROM " +TABLE_NAME,null); 
    return res; 

}public int Update(int id,String Name,String surname,string marks){ 
SQLiteDatabase db=this.getWritableDatabase(); 
ContentValues contentValues= new ContentValues(); 
contentValues.put(COL_2,name); 
contentValues.put(COL_3,surname); 
contentValues.put(COL_4,marks);return db.update(TABLENAME, contentValues,"ID=?",new String[] {id});} 
+0

你'update'方法需要4个参数和你逝去的只有3个,约'id'你是不是通过什么在数据库处理程序'update'方法 –

+0

? – Karthick

+0

是在你的形象,错误是因为你没有通过所需的参数 –

回答

1

在做更新和删除MainActivity.java:

private void deleteData() { 
     btnDelete.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Integer deleteAccount = databaseHelperAdapter.deleteAccount(tvEmail.getText().toString()); 
       if (deleteAccount > 0) { 
        Toast.makeText(Welcome.this, "Data Deleted ", Toast.LENGTH_LONG).show(); 
       } else { 
        Toast.makeText(Welcome.this, "Data Not Deleted ", Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
    } 


    public void UpdateData() { 
     btnUpdate.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String gender = genderspinner.getSelectedItem().toString(); 
       String image = imUserPhoto.toString(); 

       boolean isUpdate = databaseHelperAdapter.updateData(tvEmail.getText().toString(), 
         etFname.getText().toString(), 
         etLname.getText().toString(), 
         etPassword.getText().toString(), gender, image); 
       if (isUpdate == true) { 
        Toast.makeText(Welcome.this, "Data Updated ", Toast.LENGTH_LONG).show(); 
       } else { 
        Toast.makeText(Welcome.this, "Data Not Updated ", Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
    } 

在Database.java:

public boolean updateData(String name, String fname, String lname, String password, String gender, String image) { 
     SQLiteDatabase sqLiteDatabase = helper.getWritableDatabase(); 

     ContentValues contentValues = new ContentValues(); 
     contentValues.put(DatabaseHelper.EMAIL, email); 
     contentValues.put(DatabaseHelper.FNAME, fname); 
     contentValues.put(DatabaseHelper.LNAME, lname); 
     contentValues.put(DatabaseHelper.PASSWORD, password); 
     contentValues.put(DatabaseHelper.GENDER, gender); 
     contentValues.put(DatabaseHelper.IMAGE, image); 
     sqLiteDatabase.update(DatabaseHelper.TABLE_NAME, contentValues, DatabaseHelper.EMAIL + " =? ", new String[]{email}); 
     return true; 

    } 

    public int deleteAccount(String email) { 
     SQLiteDatabase sqLiteDatabase = helper.getWritableDatabase(); 
     return sqLiteDatabase.delete(DatabaseHelper.TABLE_NAME, DatabaseHelper.EMAIL + " =?", new String[]{email}); 

    } 

从标识获取数据:

public Cursor getData(int id){ 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor res = db.rawQuery("select * from contacts where id="+id+"", null); 
     return res; 
    } 
+0

谢谢,但是当给id和点击显示细节想加载我们如何做到这一点(即)“显示”按钮单击事件 – Karthick

+0

你需要从用户id获取数据,然后吐司该数据。 –

+0

如果我上面的答案是正确的,并且满足你想要的,那么..接受它。 –