دوستان کسی میدونه مشکل این کد چی هست؟من هرکاری میکنم بازم موقعی که میخوام یه تسک اولیه رو همونجوری که استاد توضیح میدن اضافه کنم و لاگ بگیرم مقداره 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;
}
}
بخاطر اینکه سورس پروژه جزیی از دوره هست من لینک دانلود پروژه رو حذف کردم
ممنونم از شما.
سلام وقت بخیر
پروژه رو ارسال بفرمایید تا دیباگ کنم و نتیجه رو خدمتتون ارسال کنم
برای ارسال پروژه میتونید از پیکوفایل یا گوگل درایو استفاده کنین.