Lobarotoriya mashg`uloti №6
Mavzu: SQLite MBBT bilan ishlash.
Ishdan maqsad: Ma`lumotlar bazasini ishlash prinspini o`rganishi, haqiqiy proyektlarda
ma`lumotlar bazasini tutgan o`rni, grfik ko`rinishda ularni boshqarish va CRUD tizimini o`rganish.
Nazariy qism: Android da SQLite Database da ishlash. CRUD tizimi.
BIzlar oldingi lobarotoriya mashg`ulotida xotira turlari bilan tanishib chiqqan edik, masalan
SharePreferences yoki ichki va tashqi xotiralarni. Android SDK da sqlite uchun maxsus
kutubxonalar mavjud bo`lib, android.database.sqlite package yordamida chaqirilib olinadi. Bizlar
ushbu lobaratoriya masg`ulotimizda SQLite da CRUD tizimini o`rganib chiqamiz.
Ma`lumotlar bazasini sqlite da yaratish:
Bazadannix SQLiteOpenHelper metodi yordamida java fayliga import qlinib olinadi.
public class PostDatabase extends SQLiteOpenHelper {
private static final String TAG = "PostDatabase";
// Database Specific Details
// If you change the database schema, you must increment the database version.
private static final int DB_VERSION = 1;
// DB Name, same is used to name the sqlite DB file
private static final String DB_NAME = "test_db";
// `posts` table details
public static final String TABLE_POSTS = "posts";
public static final String ID = "id";
public static final String COL_TITLE = "title";
public static final String COL_CONTENT = "content";
private static final String CREATE_TABLE_POSTS =
"CREATE TABLE " + TABLE_POSTS
+ " (" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COL_TITLE + " TEXT NOT NULL, "
+ COL_CONTENT + " TEXT NOT NULL);";
public PostDatabase(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// Called when the database is created for the
// first time. This is where the creation of
// tables and the initial population of the tables should happen.
db.execSQL(CREATE_TABLE_POSTS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Called when the database needs to be upgraded.
// The implementation should use this method to
// drop tables, add tables, or do anything else
// it needs to upgrade to the new schema version.
Log.w(TAG, "Upgrading database. Existing contents will be lost. ["
+ oldVersion + "] -> [" + newVersion + "]");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_POSTS);
// Create after dropping
onCreate(db);
}
}
Biz yaratgan sinfda PostDatabase ni tanishtirb o`tishimiz kerak.
public final class DatabaseContract {
public static abstract class Post implements BaseColumns {
public static final String TABLE_NAME = "posts";
public static final String COL_TITLE = "title";
public static final String COL_CONTENT = "content";
}
}
SQLite da bazadan o`qish va yozish:
getReadableDatabase() yoki getWritableDatabase() metodlari yordamida ma`lumotlar bazasiga
murojat qilishimiz mumkin.
PostDatabase DB = new PostDatabase(MainActivity.this);
SQLiteDatabase sqlDB = DB.getWritableDatabase();
// Execute queries...
sqlDB.close();
getWritabelDatabase() metodini SQLite boyektlari uchun qaytaradi. Bunda biz databasega o`qish va
yozish imkoniyatini yaratadi.
Database yaratamiz
ContentValues values = new ContentValues();
values.put(PostDatabase.COL_TITLE, "Test Title");
values.put(PostDatabase.COL_CONTENT, "Test Content");
sqlDB.insert(PostDatabase.TABLE_POSTS, null, values);
insert() metodi yordamida ma`lumot kiritiladi.
ContentValues values = new ContentValues();
values.put(PostDatabase.COL_TITLE, "Test Title");
values.put(PostDatabase.COL_CONTENT, "Test Content");
sqlDB.insert(PostDatabase.TABLE_POSTS, null, values);
Cursor cursor = sqlDB.rawQuery("SELECT * FROM posts WHERE id = ?", new String[]{ "1" });
if (cursor != null && cursor.moveToFirst()) {
String title = cursor.getString(cursor.getColumnIndex(PostDatabase.COL_TITLE));
String content = cursor.getString(cursor.getColumnIndex(PostDatabase.COL_CONTENT));
Log.d(TAG, "Title: " + title + " Content: " + content);
cursor.close();
}
values = new ContentValues();
values.put(PostDatabase.COL_TITLE, "Second Title");
values.put(PostDatabase.COL_CONTENT, "Second Content");
sqlDB.insert(PostDatabase.TABLE_POSTS, null, values);
// public Cursor query (String table, String[] columns, String selection, String[] selectionArgs,
String groupBy, String having, String orderBy, String limit)
cursor = sqlDB.query(PostDatabase.TABLE_POSTS,
new String[] { PostDatabase.ID, PostDatabase.COL_TITLE, PostDatabase.COL_CONTENT
},
null, null, null, null, null);
if (cursor != null) {
int idIndex = cursor.getColumnIndex(PostDatabase.ID);
int titleIndex = cursor.getColumnIndex(PostDatabase.COL_TITLE);
int contentIndex = cursor.getColumnIndex(PostDatabase.COL_CONTENT);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
int id = cursor.getInt(idIndex);
String title = cursor.getString(titleIndex);
String content = cursor.getString(contentIndex);
// Dumps (2 rows):
// ID: 1 Title: Test Title Content: Test Content
// ID: 2 Title: Second Title Content: Second Content
Log.d(TAG, "ID: " + id + " Title: " + title + " Content: " + content);
cursor.moveToNext();
}
}
Do'stlaringiz bilan baham: |