SQLIte 데이터베이스는 항목을 삭제할 수 없습니다

SQLdatabase가 있고 목록보기의 각 항목 옆에있는 단추를 사용하여 목록보기에 표시된 항목을 삭제하려고합니다. 하지만 현재는 삭제할 수 없습니다.

이 문제는 selectionargs아래와 같이 변수에 있습니다. 1과 같은 숫자를 selectionargs수동으로 넣으면 작동하지만 각 항목을 나타내는 변수를 통해 시도해 왔습니다. 이로 인해 오류가 발생하지는 않지만 바로 토스트 메시지로 이동하여 삭제할 수 없습니다. ac.ID는 어댑터 클래스와 목록 항목 항목의 ID를 나타냅니다.

북마크 클래스 :

public class Bookmark extends AppCompatActivity {

myAdapter myAdapter;
DBManager db;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_bookmark);
    db = new DBManager(this);

    onLoadAttraction();
   // onLoadTransport();


}

public void onLoadAttraction() {
    ArrayList<Adapter> listData = new ArrayList<Adapter>();
    listData.clear();
    Cursor cursor = db.Query("BookmarkAttraction",null, null, null, DBManager.ColId);

    if (cursor.moveToFirst()) {
        do {
            listData.add(new Adapter(
                    cursor.getString(cursor.getColumnIndex(DBManager.ColType))
                    , cursor.getString(cursor.getColumnIndex(DBManager.ColName))
                    , cursor.getString(cursor.getColumnIndex(DBManager.ColLocation))
                    , cursor.getString(cursor.getColumnIndex(DBManager.ColOpening))
                    , cursor.getString(cursor.getColumnIndex(DBManager.ColClosing))
                    , cursor.getString(cursor.getColumnIndex(DBManager.ColNearbyStop))
            ,null,null,null, null, null));
        } while (cursor.moveToNext());
    }

    myAdapter = new myAdapter(listData);
    ListView ls = (ListView) findViewById(R.id.listView);
    ls.setAdapter(myAdapter);
}

public void onLoadTransport(){
    ArrayList<Adapter> listData = new ArrayList<Adapter>();
    listData.clear();
    Cursor cursor = db.Query("BookmarkTransport",null, null, null, DBManager.ColId);

    if (cursor.moveToFirst()) {
        do {
            listData.add(new Adapter(
                    cursor.getString(cursor.getColumnIndex(DBManager.ColType))
                    , cursor.getString(cursor.getColumnIndex(DBManager.ColName))
                    , cursor.getString(cursor.getColumnIndex(DBManager.ColLocation))
                    , null
                    , null
                    , null
                    ,cursor.getString(cursor.getColumnIndex(DBManager.ColTime))
                    ,cursor.getString(cursor.getColumnIndex(DBManager.ColNextStop))
                    , cursor.getString(cursor.getColumnIndex(DBManager.ColPhoneNumber))
                    ,null,null));
        } while (cursor.moveToNext());
    }

    myAdapter = new myAdapter(listData);
    ListView ls = (ListView) findViewById(R.id.listView);
    ls.setAdapter(myAdapter);
}

  class myAdapter extends BaseAdapter {
    public ArrayList<Adapter> listItem;
    Adapter ac;
    public myAdapter(ArrayList<Adapter> listItem) {
        this.listItem = listItem;

    }

    @Override
    public int getCount() {
        return listItem.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View view, ViewGroup viewGroup) {
        LayoutInflater myInflator = getLayoutInflater();
        final View myView = myInflator.inflate(R.layout.list_bookmark, null);

       ac = listItem.get(position);


        TextView Type = (TextView) myView.findViewById(R.id.BMType);
        Type.setText(ac.Type);

        TextView Name = (TextView) myView.findViewById(R.id.BMName);
        Name.setText(ac.Name);

        TextView Location = (TextView) myView.findViewById(R.id.BMLocation);
        Location.setText(ac.Location);

        TextView Opening = (TextView) myView.findViewById(R.id.BMOpen);
        Opening.setText(ac.Opening);


        TextView Closing = (TextView) myView.findViewById(R.id.BMClose);


            Closing.setText(ac.Closing);


        TextView NearbyStop1 = (TextView) myView.findViewById(R.id.BMNearbyStop);

            NearbyStop1.setText(ac.NearbyStop);


        Button buttonDelete = (Button)myView.findViewById(R.id.buttonDelete);
        buttonDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String[] selectionArgs = {ac.ID};
                int count = db.Delete("BookmarkAttraction","ID=? ",selectionArgs);
                if (count > 0) {
                    onLoadAttraction();
                    Toast.makeText(getApplicationContext(),"Data deleted", Toast.LENGTH_LONG).show();
                }else{
                    Toast.makeText(getApplicationContext(),"Cannnot delete", Toast.LENGTH_LONG).show();
                }

            }
        });



        return myView;
    }
}
}

DBManager 클래스 :

 public class DBManager  {

private SQLiteDatabase sqlDB;
static final String ColId = "ID";
static final String DBName = "InternalDB";
static final String TableName = "BookmarkAttraction";
static final String TableName2 = "BookmarkTransport";
static final String TableName3 = "Itinerary";
static final String ColItineraryName = "ItineraryName";
static final String ColDate = "Date";
static final String ColType = "Type";
static final String ColName = "Name";
static final String ColLocation = "Location";
static final String ColOpening = "OpeningTime";
static final String ColClosing = "ClosingTime";
static final String ColNearbyStop = "NerbyStop1";


static final String ColTime = "Time";
static final String ColNextStop = "NextStop";
static final String ColPhoneNumber = "PhoneNumber";

static final int DBVersion = 1;

static final String CreateTable = "CREATE TABLE IF NOT EXISTS " + TableName + "(ID INTEGER PRIMARY KEY AUTOINCREMENT," + ColType+ " TEXT," +
        ColName+ " TEXT," + ColLocation+ " TEXT," + ColOpening+ " TEXT," +ColClosing+ " TEXT," + ColNearbyStop+ " TEXT);";

static  final String CreateTabe2 = "CREATE TABLE IF NOT EXISTS " +TableName2 + "(ID INTEGER PRIMARY KEY AUTOINCREMENT,"
        + ColType + " TEXT,"
        + ColName + " TEXT,"
        + ColLocation + " TEXT,"
        + ColTime+ " TEXT,"
        + ColNextStop + " TEXT,"
        + ColPhoneNumber + " TEXT);";

static final String CreateTable3 = "CREATE TABLE IF NOT EXISTS " + TableName3 + "(ID INTEGER PRIMARY KEY AUTOINCREMENT," + ColItineraryName + " TEXT,"
        + ColDate + " TEXT," + ColName + " TEXT," + ColLocation + " TEXT," + ColTime + " TEXT);";


static class DBHelper extends SQLiteOpenHelper{
    Context context;

    DBHelper(Context context){
        super(context, DBName, null, DBVersion);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        Toast.makeText(context,DBName,Toast.LENGTH_LONG).show();
        db.execSQL(CreateTable);
        Toast.makeText(context,"Table is created ", Toast.LENGTH_LONG).show();
        db.execSQL(CreateTabe2);
        Toast.makeText(context,"Transport table created", Toast.LENGTH_LONG).show();
        db.execSQL(CreateTable3);
        Toast.makeText(context,"Itin table created", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP TABLE IF EXISTS" + TableName);
        db.execSQL("DROP TABLE IF EXISTS" + TableName2);
        db.execSQL("DROP TABLE IF EXISTS" + TableName3);
        onCreate(db);
    }
}


public DBManager(Context context){
    DBHelper db = new DBHelper(context);
    sqlDB = db.getWritableDatabase();
}

public long Insert(String tablename,ContentValues values){
    long ID =  sqlDB.insert(tablename,"",values);
    return ID;
}

public Cursor Query(String tablename, String [] projection, String selection, String [] selectionArgs, String sortOrder){
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
    qb.setTables(tablename);
    Cursor cursor = qb.query(sqlDB,projection, selection, selectionArgs,null,null,sortOrder);
    return cursor;
}

public int Delete(String tablename,String selection, String[] selectionArgs){
    int count = sqlDB.delete(tablename,selection,selectionArgs);
    return count;
}

}

어댑터 클래스 :

 public class Adapter {

public String ID;
public String Type;
public String Name;
public String Location;
public String Opening;
public String Closing;
public String NearbyStop;
public String Time;
public String NextStop;
public String PhoneNumber;
public String Latitude;
public String Longitude;

public Adapter(String type, String name, String location, String opening, String closing,
               String nearbyStop, String time, String nextStop, String phoneNumber, String Latitude,
               String Longitude) {
    this.Type = type;
    this.Name = name;
    this.Location = location;
    this.Opening = opening;
    this.Closing = closing;
    this.NearbyStop = nearbyStop;
    this.Time = time;
    this.NextStop = nextStop;
    this.PhoneNumber = phoneNumber;
    this.Latitude = Latitude;
    this.Longitude = Longitude;
}
}

삭제 버튼의 코드는 실제 삭제 코드를 보유한 DBManager가있는 북마크 클래스에 있습니다. 누구든지 이것을 도울 수 있다면 대단히 감사하겠습니다.

메멧 K

클래스 ac필드를 제거하고 myAdapter메서드 내에서 getView메서드 변수로 사용합니다 .

그런 다음 ListView.setOnItemClickListener메서드를 사용하여 위치 인식 기능이있는 클릭 리스너를 추가합니다. (어댑터를 설정 한 후 한 번만 수행하십시오.) 이렇게하면 listItem.get(position)해당 위치에 항목을 가져올 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQLite 데이터베이스에서 행을 삭제할 수 없습니다.

분류에서Dev

sqlite 데이터베이스를 삭제할 수 없습니다.

분류에서Dev

iOS의 sqlite 데이터베이스에서 테이블을 삭제할 수 없습니다.

분류에서Dev

django보기에서 데이터베이스에서 항목을 삭제할 수 없습니다.

분류에서Dev

내 Sqlite 데이터베이스에서 데이터를 삭제할 수 없습니다.

분류에서Dev

데이터베이스에서 행을 삭제할 수 없습니다.

분류에서Dev

데이터베이스에서 행을 삭제할 수 없습니다.

분류에서Dev

NHiberante는 하위 항목을 삭제할 수 없습니다.

분류에서Dev

데이터베이스에 항목을 추가 할 수 없습니다.

분류에서Dev

데이터베이스 sqlite를 실행할 수 없습니다.

분류에서Dev

iOS에서 sqlite3 데이터베이스 테이블을 업데이트 할 수 없습니다.

분류에서Dev

SQLite 데이터베이스에서 읽을 수 없습니다.

분류에서Dev

Sqlite 데이터베이스에서 개체를 삭제할 수 없습니다. "저장할 수없는 유형 : <유형>"메시지와 함께 실패

분류에서Dev

SQLite 데이터베이스에서 동적으로 테이블 이름을 할당 할 수 없습니다.

분류에서Dev

룸 데이터베이스와 코 루틴을 사용하여 recyclerview에서 항목을 삭제할 수 없습니다.

분류에서Dev

장고 데이터베이스의 항목 수를 제한하는 방법은 무엇입니까? 기본 데이터베이스 (sqlite3) 사용

분류에서Dev

데이터베이스 테이블을 만들고 iOS sqlite3에 삽입 할 수 없습니다.

분류에서Dev

android- onLongItemClickListener listview 데이터베이스에서 항목을 제거 할 수 없습니다.

분류에서Dev

sqlite 라이브러리는 설치된 데이터베이스 파일을 업데이트 할 수 없습니다.

분류에서Dev

목록보기에서 선택한 항목을 삭제할 수 없습니다 (sqlite의 값).

분류에서Dev

양식 필드에서 데이터베이스 항목을 업데이트 할 수 없습니다.

분류에서Dev

MongoDB는 배열에서 항목을 삭제할 수 없습니다.

분류에서Dev

ID 필드없이 sqlite 데이터베이스에서 항목 삭제

분류에서Dev

Postgresql 데이터베이스는 어떤 경우에도 항상 활성 세션을 가지고 있기 때문에 삭제할 수 없습니다.

분류에서Dev

마스터 테이블 데이터 postgresql을 삭제할 수 없습니다.

분류에서Dev

SQLITE 데이터베이스 Android에 액세스 할 수 없습니다.

분류에서Dev

드롭 다운 메뉴에서 데이터베이스로 항목을 삽입 할 수 없습니다

분류에서Dev

데이터베이스에 항목을 다시 저장할 수 있습니까?

분류에서Dev

sqlite는 데이터베이스를 열 수 없습니다

Related 관련 기사

  1. 1

    SQLite 데이터베이스에서 행을 삭제할 수 없습니다.

  2. 2

    sqlite 데이터베이스를 삭제할 수 없습니다.

  3. 3

    iOS의 sqlite 데이터베이스에서 테이블을 삭제할 수 없습니다.

  4. 4

    django보기에서 데이터베이스에서 항목을 삭제할 수 없습니다.

  5. 5

    내 Sqlite 데이터베이스에서 데이터를 삭제할 수 없습니다.

  6. 6

    데이터베이스에서 행을 삭제할 수 없습니다.

  7. 7

    데이터베이스에서 행을 삭제할 수 없습니다.

  8. 8

    NHiberante는 하위 항목을 삭제할 수 없습니다.

  9. 9

    데이터베이스에 항목을 추가 할 수 없습니다.

  10. 10

    데이터베이스 sqlite를 실행할 수 없습니다.

  11. 11

    iOS에서 sqlite3 데이터베이스 테이블을 업데이트 할 수 없습니다.

  12. 12

    SQLite 데이터베이스에서 읽을 수 없습니다.

  13. 13

    Sqlite 데이터베이스에서 개체를 삭제할 수 없습니다. "저장할 수없는 유형 : <유형>"메시지와 함께 실패

  14. 14

    SQLite 데이터베이스에서 동적으로 테이블 이름을 할당 할 수 없습니다.

  15. 15

    룸 데이터베이스와 코 루틴을 사용하여 recyclerview에서 항목을 삭제할 수 없습니다.

  16. 16

    장고 데이터베이스의 항목 수를 제한하는 방법은 무엇입니까? 기본 데이터베이스 (sqlite3) 사용

  17. 17

    데이터베이스 테이블을 만들고 iOS sqlite3에 삽입 할 수 없습니다.

  18. 18

    android- onLongItemClickListener listview 데이터베이스에서 항목을 제거 할 수 없습니다.

  19. 19

    sqlite 라이브러리는 설치된 데이터베이스 파일을 업데이트 할 수 없습니다.

  20. 20

    목록보기에서 선택한 항목을 삭제할 수 없습니다 (sqlite의 값).

  21. 21

    양식 필드에서 데이터베이스 항목을 업데이트 할 수 없습니다.

  22. 22

    MongoDB는 배열에서 항목을 삭제할 수 없습니다.

  23. 23

    ID 필드없이 sqlite 데이터베이스에서 항목 삭제

  24. 24

    Postgresql 데이터베이스는 어떤 경우에도 항상 활성 세션을 가지고 있기 때문에 삭제할 수 없습니다.

  25. 25

    마스터 테이블 데이터 postgresql을 삭제할 수 없습니다.

  26. 26

    SQLITE 데이터베이스 Android에 액세스 할 수 없습니다.

  27. 27

    드롭 다운 메뉴에서 데이터베이스로 항목을 삽입 할 수 없습니다

  28. 28

    데이터베이스에 항목을 다시 저장할 수 있습니까?

  29. 29

    sqlite는 데이터베이스를 열 수 없습니다

뜨겁다태그

보관