【问题标题】:How to update and delete data from table in MainActivity in SQLITEOPENHELPER如何在 SQLITEOPENHELPER 的 MainActivity 中更新和删除表中的数据
【发布时间】:2015-12-23 01:41:15
【问题描述】:

问题是如何显示来自用户 ID 的数据。

我为学生创建了一个包含姓名、姓氏、标记字段的数据库,我确实成功插入和查看,但我不知道如何进行更新和删除,请帮忙。在这里,我想根据 ID 进行更新和删除,我在 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});}

【问题讨论】:

  • 你的 update 方法需要 4 个参数,而你只传递了 3 个参数,那么 id 你没有在 update 方法中传递那个参数
  • 在数据库处理程序中??
  • 在您的图像中是的,错误是因为您没有传递必需的参数
  • thx 但是如何执行,我有一个疑问,当我给出 id 并单击 Show datas want to be loadin Editbox fields when I click Update button database want to be update 我们怎么能做到这一点

标签: android sqlite sql-update android-sqlite main-activity


【解决方案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});

    }

从 Id 中获取数据:

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

【讨论】:

  • 谢谢,但是当给定 id 并单击显示要加载的详细信息时,我们如何做到这一点(即)“显示”按钮单击事件
  • 您需要从用户 id 中获取数据,然后为该数据敬酒。
  • 如果我上面的答案是正确的并且满足你想要的......然后接受它。
  • ji 代码是 crt 我接受了,但怀疑是当我在 edittext 中给 id no 时,当我单击显示按钮时,当前 id 上的 sql 中的数据想要显示,我们如何执行该操作跨度>
  • 检查我更新的答案。不要指望我会完成你的整个代码。 .自己做..如果你有错误然后只发布。
猜你喜欢
  • 2015-12-22
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 2022-07-21
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
相关资源
最近更新 更多