مشکل در ایجاد تسک اولیه

پرسیده شده
فعالیت 1127 روز پیش
دیده شده 451 بار
0

دوستان کسی میدونه مشکل این کد چی هست؟من هرکاری میکنم بازم موقعی که میخوام یه تسک اولیه رو همونجوری که استاد توضیح میدن اضافه کنم و لاگ بگیرم مقداره 1- رو برمیگردونه که یعنی ساخته نشد خیلی ممنون میشم راهنمایی بفرمایید

این قسمت پایین مربوط به کلاس sqliteHelper هست و عکس از کلاس task و main activity و error رو در پیوست قرار دادم.

 public SQLiteHelper(@Nullable Context context) {
        super(context, "db_app", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL("CREATE TABLE "+TABLE_TASKS+" (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, completed BOOLIAN);");
        }catch (SQLException e){
            Log.e(TAG, "onCreate: "+e.toString());
        }

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    public long addTask(Task task){
        SQLiteDatabase sqLiteDatabase=getWritableDatabase();
        ContentValues contentValues=new ContentValues();
        contentValues.put("title",task.getTitle());
        contentValues.put("isCompleted",task.isCompleted());
        long result=sqLiteDatabase.insert(TABLE_TASKS,null,contentValues);
        sqLiteDatabase.close();
        return result;
    }

    public List<Task> getTasks(){
        SQLiteDatabase sqLiteDatabase=getReadableDatabase();
        Cursor cursor=sqLiteDatabase.rawQuery("SELECT * FROM "+TABLE_TASKS,null);
        List<Task> taskList=new ArrayList<>();
        if (cursor.moveToFirst()){
            do {
                Task task=new Task();
                task.setId(cursor.getLong(0));
                task.setTitle(cursor.getString(1));
                task.setCompleted(cursor.getInt(2)==1);
                taskList.add(task);
            }while (cursor.moveToNext());
        }
        sqLiteDatabase.close();
        return taskList;
    }

    public void searchTask(String query){

    }

    public int updateTask(Task task){
        SQLiteDatabase sqLiteDatabase=getWritableDatabase();
        ContentValues contentValues=new ContentValues();
        contentValues.put("title",task.getTitle());
        contentValues.put("isCompleted",task.isCompleted());
        int result=sqLiteDatabase.update(TABLE_TASKS,contentValues,"id = ?",new String[]{String.valueOf(task.getId())});
        sqLiteDatabase.close();
        return result;
    }

    public int deleteTask(Task task){
        SQLiteDatabase sqLiteDatabase=getWritableDatabase();
        int result=sqLiteDatabase.delete(TABLE_TASKS,"id = ?",new String[]{String.valueOf(task.getId())});
        sqLiteDatabase.close();
        return result;
    }

    public void deleteAllTasks(){

    }
فایل پیوست
images.rar
203.6 KB

امید ایوبی
امید ایوبی

16 فروردین 00

1
حذف شده

سلام وقت بخیر

 

شما نام فیلد رو تغییر دادین پس باید طبق اون برنامه تون رو جلو ببرید 

@ColumnInfo(name = "completed")
 private boolean isCompleted;

پس متد add دیتابیس شما میشه(مشکل تون این بود که بجای completed بنویسید isCompleted رو نوشتید .

public long addTask(Task task){
        SQLiteDatabase sqLiteDatabase = getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("title" , task.getTitle());
        contentValues.put("completed",task.isSelected()); ***
        long result = sqLiteDatabase.insert(TABLE_TASKS,null , contentValues);
        sqLiteDatabase.close();
        return result;
    }

و بطور کل کلاس شما میشه:



import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import androidx.annotation.Nullable;

import java.util.ArrayList;
import java.util.List;

public class SQLiteHelper extends SQLiteOpenHelper {
    private static final String TABLE_TASKS = "tbl_tasks";
    public SQLiteHelper(@Nullable Context context) {
        super(context, "db_app", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL("CREATE TABLE "+ TABLE_TASKS + " (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, completed BOOLEAN);");
        }catch (SQLiteException e){
            Log.e("TAG", "onCreate: "+e.toString() );
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    public long addTask(Task task){
        SQLiteDatabase sqLiteDatabase = getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("title" , task.getTitle());
        contentValues.put("completed",task.isSelected());
        long result = sqLiteDatabase.insert(TABLE_TASKS,null , contentValues);
        sqLiteDatabase.close();
        return result;
    }
    public List<Task> getTasks(){
        SQLiteDatabase sqLiteDatabase = getReadableDatabase();
        Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM "+TABLE_TASKS ,null);
        List<Task> tasks = new ArrayList<>();
        if(cursor.moveToFirst()){
            do{
                Task task = new Task();
                task.setId(cursor.getLong(0));
                task.setTitle(cursor.getString(1));
                task.setSelected(cursor.getInt(2)==1);
                tasks.add(task);
            }while (cursor.moveToNext());
        }
        return tasks;
    }

    public int updateTask(Task task){
        SQLiteDatabase sqLiteDatabase = getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("title" , task.getTitle());
        contentValues.put("completed",task.isSelected());
        int result = sqLiteDatabase.update(TABLE_TASKS , contentValues , "id = ?" , new String[]{String.valueOf(task.getId())});
        sqLiteDatabase.close();
        return result;
    }

    public int deleteTask(Task task){
        SQLiteDatabase sqLiteDatabase = getWritableDatabase();
        int result = sqLiteDatabase.delete(TABLE_TASKS , "id = ?" ,new String[]{String.valueOf(task.getId())});
        sqLiteDatabase.close();
        return result;
    }

    public void ClearAllTasks(){
        SQLiteDatabase sqLiteDatabase = getWritableDatabase();
        sqLiteDatabase.execSQL("DELETE FROM "+TABLE_TASKS);
    }

    public List<Task> searchInTasks(String query){
        SQLiteDatabase sqLiteDatabase = getWritableDatabase();
        Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM "+TABLE_TASKS+" WHERE title LIKE '%"+query+"%'",null);
        List<Task> tasks = new ArrayList<>();
        if(cursor.moveToFirst()){
            do{
                Task task = new Task();
                task.setId(cursor.getLong(0));
                task.setTitle(cursor.getString(1));
                task.setSelected(cursor.getInt(2)==1);
                tasks.add(task);
            }while (cursor.moveToNext());
        }
        return tasks;
    }

}

بخاطر اینکه سورس پروژه جزیی از دوره هست من لینک دانلود پروژه رو حذف کردم 

ممنونم از شما.

فایل پیوست

پوریا شفیعی

توسط

پوریا شفیعی

18 فروردین 00

0
حذف شده

سلام وقت بخیر 

 

پروژه رو ارسال بفرمایید تا دیباگ کنم و نتیجه رو خدمتتون ارسال کنم

برای ارسال پروژه میتونید از پیکوفایل یا گوگل درایو استفاده کنین.

فایل پیوست

پوریا شفیعی

توسط

پوریا شفیعی

16 فروردین 00