تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ امید ایوبی
مشکل در ایجاد تسک اولیه
پوریا شفیعی حل شده توسط پوریا شفیعی

دوستان کسی میدونه مشکل این کد چی هست؟من هرکاری میکنم بازم موقعی که میخوام یه تسک اولیه رو همونجوری که استاد توضیح میدن اضافه کنم و لاگ بگیرم مقداره 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(){
    }

سلام وقت بخیر 

 

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

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

پوریا شفیعی ۱۶ فروردین ۱۴۰۰، ۱۶:۰۴

سلام وقت بخیر

 

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

@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;
    }
}

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

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

بهترین پاسخ
پوریا شفیعی ۱۸ فروردین ۱۴۰۰، ۰۸:۴۸