· 9 years ago · Oct 26, 2016, 03:00 PM
1
2package ru.alexanderklimov.todoold;
3
4import android.content.ContentValues;
5import android.content.Context;
6import android.database.Cursor;
7import android.database.SQLException;
8import android.database.sqlite.SQLiteDatabase;
9import android.database.sqlite.SQLiteOpenHelper;
10import android.util.Log;
11
12public class ToDoDatabase extends SQLiteOpenHelper {
13
14 private static final String DATABASE_NAME = "todo_app.db";
15 private static final int DATABASE_VERSION = 1;
16 private static final String DATABASE_TABLE = "todos";
17
18 // Ð¿Ð¾Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹
19 public static final String COLUMN_ID = "_id";
20 public static final String COLUMN_CATEGORY = "category";
21 public static final String COLUMN_SUMMARY = "summary";
22 public static final String COLUMN_DESCRIPTION = "description";
23
24 // Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° Ñоздание базы данных
25 private static final String DATABASE_CREATE = "create table "
26 + DATABASE_TABLE + "(" + COLUMN_ID
27 + " integer primary key autoincrement, " + COLUMN_CATEGORY
28 + " text not null, " + COLUMN_SUMMARY + " text not null,"
29 + COLUMN_DESCRIPTION + " text not null" + ");";
30
31 public ToDoDatabase(Context context) {
32 super(context, DATABASE_NAME, null, DATABASE_VERSION);
33 }
34
35 @Override
36 public void onCreate(SQLiteDatabase db) {
37 // TODO Auto-generated method stub
38 db.execSQL(DATABASE_CREATE);
39 }
40
41 @Override
42 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
43 // TODO Auto-generated method stub
44 Log.w(ToDoDatabase.class.getName(), "Upgrading database from version "
45 + oldVersion + " to " + newVersion
46 + ", which will destroy all old data");
47 db.execSQL("DROP TABLE IF EXISTS todos");
48 onCreate(db);
49 }
50
51 /**
52 * Создаёт новый Ñлемент ÑпиÑка дел. ЕÑли Ñоздан уÑпешно - возвращаетÑÑ
53 * номер Ñтроки rowId, иначе -1
54 */
55 public long createNewTodo(String category, String summary,
56 String description) {
57 SQLiteDatabase db = this.getWritableDatabase();
58 ContentValues initialValues = createContentValues(category, summary,
59 description);
60
61 long row = db.insert(DATABASE_TABLE, null, initialValues);
62 db.close();
63
64 return row;
65 }
66
67 /**
68 * ОбновлÑет ÑпиÑок
69 */
70 public boolean updateTodo(long rowId, String category, String summary,
71 String description) {
72 SQLiteDatabase db = this.getWritableDatabase();
73 ContentValues updateValues = createContentValues(category, summary,
74 description);
75
76 return db.update(DATABASE_TABLE, updateValues, COLUMN_ID + "=" + rowId,
77 null) > 0;
78 }
79
80 /**
81 * УдалÑет Ñлемент ÑпиÑка
82 */
83 public void deleteTodo(long rowId) {
84 SQLiteDatabase db = this.getWritableDatabase();
85 db.delete(DATABASE_TABLE, COLUMN_ID + "=" + rowId, null);
86 db.close();
87 }
88
89 /**
90 * Возвращает курÑор Ñо вÑеми Ñлементами ÑпиÑка дел
91 *
92 * @return курÑор Ñ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð°Ð¼Ð¸ вÑех запиÑей
93 */
94 public Cursor getAllTodos() {
95 SQLiteDatabase db = this.getWritableDatabase();
96 return db.query(DATABASE_TABLE, new String[] { COLUMN_ID,
97 COLUMN_CATEGORY, COLUMN_SUMMARY, COLUMN_DESCRIPTION }, null,
98 null, null, null, null);
99 }
100
101 /**
102 * Возвращает курÑор Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¹ запиÑи
103 */
104 public Cursor getTodo(long rowId) throws SQLException {
105 SQLiteDatabase db = this.getReadableDatabase();
106 Cursor mCursor = db.query(true, DATABASE_TABLE,
107 new String[] { COLUMN_ID, COLUMN_CATEGORY, COLUMN_SUMMARY,
108 COLUMN_DESCRIPTION }, COLUMN_ID + "=" + rowId, null,
109 null, null, null, null);
110 if (mCursor != null) {
111 mCursor.moveToFirst();
112 }
113 return mCursor;
114 }
115
116 /*
117 * Создаёт пару ключ-значение и запиÑывает в базу
118 */
119 private ContentValues createContentValues(String category, String summary,
120 String description) {
121 ContentValues values = new ContentValues();
122 values.put(COLUMN_CATEGORY, category);
123 values.put(COLUMN_SUMMARY, summary);
124 values.put(COLUMN_DESCRIPTION, description);
125 return values;
126 }
127}