1 / 19

Giới Thiệu về SQLite

Giới Thiệu về SQLite. - Tìm hiểu chung về SQLite - Tạo , kết nối , thao tác với Database ( SQLite ). Tìm hiểu chung về SQLite.

sidone
Download Presentation

Giới Thiệu về SQLite

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GiớiThiệuvềSQLite -TìmhiểuchungvềSQLite -Tạo , kếtnối , thaotácvới Database (SQLite)

  2. TìmhiểuchungvềSQLite • Mỗi ứng dụng đều sử dụng dữ liệu, dữ liệu có thể đơn giản hay đôi khi là cả 1 cấu trúc. Trong Android thì hệ cơ sở dữ liệu được sử dụng là SQLite Database, đây là hệ thống mã nguồn mở được sử dụng rộng rãi trong các ứng dụng ( Mozilla Firefox sử dụng SQLite để lưu trữ các dữ liệu về cấu hình, iPhone cũng sử dụng cơ sở dữ liệu là SQLite). CácHệ QTCSDL • TạisaoSQLiteđượcsửdụng

  3. TìmhiểuchungvềSQLite • SQLite có các ưu điểm sau: • SQLite được Richard Hipp viết dưới dạng thư viện bằng ngôn ngữ lập trình C. • Đượcthựchiệnnhư 1 thưviệnthayvìchạytrên 1 tiếntrìnhriêngbiệt • Tin cậy: các hoạt động transaction (chuyển giao) nội trong cơ sở dữ liệu được thưc hiện trọn vẹn, không gây lỗi khi xảy ra sự cố phần cứng • Tuân theo chuẩn SQL92 (chỉ có một vài đặc điểm không hỗ trợ) • Không cần cài đặt cấu hình • Kích thước chương trình gọn nhẹ, với cấu hình đầy đủ chỉ không đầy 300 kB • Thực hiện các thao tác đơn giản nhanh hơn các hệ thống cơ sở dữ liệu khách/chủ khác[1] • Không cần phần mềm phụ trợ • Phần mềm tự do với mã nguồn mở, được chú thích rõ ràng • SQLite database requires little or no administration • MỗiSqlite Database sẽđượctíchhợpvớiứngdụngtạoranó • Do đó: • -giảmtảicácphụthuộcbênngoài • -giảmthiểutốiđađộtrễ • -Đơngiảnhơntronggiaodịchvàđồngbộhóa

  4. TìmhiểuchungvềSQLite • Datatype • Sqlite cho phép bạn lưu bất cứ kiểu giá trị nào cho bất cứ ô nào dù cột đó đã đc định nghĩa kiểu trước đó • TABLE STUDENT_DEMO • COLUMN : _ID : integer primarykeyautoincrement; • COLUM N : S_NAME : text not null ; • COLUMN : S_AGE : integer ; • INSERT into STUDENT_DEMO (S_NAME,S_AGE) VALUES(‘tung’,’sjka’); • =>Tung ,0

  5. TìmhiểuchungvềSQLite • Situations Where SQLite Works Well • Application File Format(SQLiteĐã được sử dụng thành công như định dạng file trên đĩa cho các ứng dụng desktop như các công cụ phân tích tài chính, CAD packages,Ctr lưu trữ bản ghi,vv) • Embedded devices and applications(Because an SQLite database requires little or no administration, SQLite is a good choice for devices or services that must work unattended (khônggiámsát)and without human support. SQLite is a good fit for use in cellphones, PDAs, set-top boxes, and/or appliances(đồgiadụng)) • Experimental SQL language, extensions(Chính vì sự đơn giản trong thiết kế các module của SQLite mà nó được sử dụng để thử nghiệm tạo ra các mẫu mới ,các tính năng và ý tưởng mới của ngôn ngữ Database) • Websites(Dùngchocáctrang web cólưulượngtrungbình) • Internal or temporary databases(Cho các Ctr có nhiều dữ liệu cần lọc ,sắp xếp bằng nhiều cách #,để đơn giản và nhanh chóng ng ta load dữ liệu vào bộ nhớ của SQLite và sử dụng các QUERY để lấy các thông tin cần thiết , Sử dụng cách này cho phép lập trình viên linh hoạt hơn khi các cột hay các chỉ số có thể được thêm vào mà không phải mã hóa lại các câu lênh query.)

  6. TìmhiểuchungvềSQLite Adobe sử dụng SQLite như 1 ứng dụng định dạng file cho sản phẩm Photoshop Lightroom của họ, nó cũng trở thành 1 phần chuẩn của AIR (Adobe Integrated Runtime ),bên cạnh đó Acrobat Reader cũng sử dụng SQLite It is known that Google uses SQLite in their Desktop for Mac, in Google Gears, in the Android cell-phone operating system, and in the Chrome Web Browser. People are suspicious that Google uses SQLite for lots of other things that we do not know about yet. Các kỹ sư tại Google đã có những đóng góp lớncho các hệ thống con tìm kiếm toàn vănbảntrong SQLite . Apple uses SQLite for many functions within Mac OS X, including Apple Mail, Safari, and in Aperture. Apple uses SQLite in the iPhone and in the iPod touch and in iTunes software. SQLitelàđịnhdạnglưutrữsiêudữliệuchínhcho Firefox Web Browser, Thunderbird Email Reader The popular PHP programming language comes with both SQLite2 and SQLite3 built in.

  7. Situations Where Another RDBMS May Work Better • Client/Server Applications(hiệuquảkhôngcao,cóthểdẫnđếnviệc 2 ngườidùngkhácnhausửađổicùng 1 dữliệutrongcùng 1 thờiđiểm)-nóichungtatránhsửdụngkhidữliệuđượcchiasẻvàtruycậpđồngthờibằngnhiềumáytính qua net • Các website lớn • Tậpdữliệulớn :SQLitebịgiớihạntới 2 terabytes,thậmchícóthểsửlýlớnhơn,nólưutrữ database trên file đĩa,tuynhiên 1 sốhệthống file giớihạn max size chocác file củanónhỏhơn con sốtrên • Khốilượngtruycậpcao: • -nếucó 1 tiếntrìnhđangđọc 1 phầnbấtkìnàođócủaCSDL,cáctiếntrìnhkhácsẽkhôngđượcphépghilênbấtcứthànhphầnnáokháccủanó, tươngtự…

  8. Tạovàkếtnối CSDL • SQLiteOpenHelper • Dùngđểkếtnốiứngdụngvới database củanó • Tạo class StudentOpenHelper implements SQLiteOpenHelper • Hàmtạo • public StudentOpenHelper(Context context) • { • super(context,DATABASE_NAME, null, 1); • } • Implement cáchàmcủa Interface SQLiteOpenHelper • -Oncreate(SQLiteDatabase db) • -onOpen(SQLiteDatabase db) • -onUpGrade(SQLiteDatabase db, intoldVersion, intnewVersion)

  9. Tạovàkếtnối CSDL • package data; • import android.content.Context; • import android.database.sqlite.SQLiteDatabase; • import android.database.sqlite.SQLiteOpenHelper; • public class StudentOpenHelper extends SQLiteOpenHelper • { • public Context context; • public static final String DATABASE_NAME = "mystudent.db1"; • public StudentOpenHelper(Context context) • { • super(context,DATABASE_NAME, null, 1); • } • public void onOpen(final SQLiteDatabase db) • { • super.onOpen(db); • } • public void onCreate(SQLiteDatabase db) • { • StudentTable.onCreate(db); • } • public void onUpgrade(SQLiteDatabase db, intoldVersion, intnewVersion) • { • StudentTable.onUpgrade(db, oldVersion, newVersion); • } • }

  10. public void onOpen(final SQLiteDatabase db) • { • super.onOpen(db); • //db.execSQL("alter table "+ShopItemTable.DATABASE_TABLE+" add column unit text not null"); • //db.execSQL(myItemTable.CREATE_TABLE); • //db.execSQL("DROP TABLE "+ConfigTable.DATABASE_TABLE); • //db.execSQL(ConfigTable.CREATE_TABLE);

  11. Tạovàkếtnối CSDL • package data; • import android.database.sqlite.SQLiteDatabase; • public class StudentTable • { public static String DATABASE_TABLE = "student_demo"; • public static String STUDENT_ID = "_id"; • public static String STUDENT_NAME = "s_name"; • public static String STUDENT_AGE = "s_age"; • public static final String CREATE_TABLE = "create table "+StudentTable.DATABASE_TABLE+" ( "+ • StudentTable.STUDENT_ID+" integer primary key autoincrement,"+ • StudentTable.STUDENT_NAME+" text not null ,"+ • StudentTable.STUDENT_AGE+" integer );"; • public static void onCreate(SQLiteDatabase db) • { • db.execSQL(CREATE_TABLE); • } • public static void onUpgrade(SQLiteDatabase db, intoldVersion, intnewVersion) • { • db.execSQL("drop table if exists "+DATABASE_TABLE); • StudentTable.onCreate(db); • } • }

  12. Cáchthứctruyvấn • -rawQuery(String query , String[] array); • -query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) • execSQL(String sql) Execute a single SQL statement that is NOT a SELECT or any other SQL statement that returns data.

  13. Cáchthứctruyvấn rawQuery() Query() String[] cols = {“_id”,”s_name”}; String[] params = {“1,”23”}; Cursor c = db.query(“student_demo”, cols,”_id = ? And age = ?”,params,null, Null,5 ); -hơiphứctạp -linhhoạthơn -tránh SQL Injection attacks • String query = “select * from student_demo where _id = ? And age > ? Order by s_name limit ?”; • Cursor c = db.rawQuery( query, new String[]{“1”,”23”,”5”} • ); • -Ưuđiểm : dễsửdụng • -Nhượcđiểmdùngđểtruyvấntrênnhiềubảnghoặcnhiềucộtdễnhầmlẫn

  14. Cáchthứctruyvấn • execSQL(String sql) • -Dùngcho ALTER , UPDATE, DELETE • String query1 = “ALTER TABLE • student_demo ADD COLUMN diemthi INTEGER NOT NULL”; • String query2=“CREATE TABLE diemthi (s_id integer, diemthiinterger)”; • String query3 =“Delete from student_demo where s_id = 1”; • Db.execSQL(query1); • Db. execSQL(query2); • Db. execSQL(query3);

  15. Cáchthứctruyvấn • Db.delete(“TABLE”, “WHERE” ,String[] args); • Delete From Student_demo where ID = 1; • Db.delete(“Student_demo”,”ID = ?”, new String[]{id}); • ContentValues values = new ContentValues(); • values.put(“s_name”, name); • values.put(“s_age”, url); • db.update(“Student_demo”, “ _id = ? ", • new String[]{String.valueOf(id)});

  16. ContentValuesvà Cursor • ContentValues • Dùngđể INSERT hoặcUPDATE,mỗiContentValues object giốngnhư 1 hàngmàcáccộtcủacócótênnhưcáccộtcủabảngcầntácđộng • ContentValues values = new ContentValues(); • Values.put(“s_name”,”Tung”); • Values.putAge(“s_age”,23); • Db.update( “student_demo”,values, “where userID = 1”,null ); • Db.insert(“student_demo”, getNullColumnHack() , values);

  17. ContentValuesvà Cursor GiảsửtachobảngFOOmàcáccộtcủanócóthểnhậngiátrị NULL INSERT INTO foo;//ERR! INSERT INTO foo (somecol) VALUES (NULL);//OK Trongtrườnghợpbạnchưa set giátrịchobiến values Bạnsẽlấytên 1 trongsốcáccộtchophéplưutrữgiátrị NULL; Create table Student_demo ( _id integer not null autoincrement, Name text, Age integer, )

  18. ContentValuesvà Cursor -getCount() – int – trảvềsốhàngcótrongkếtquả -movetoFirst() , movetoNext() , isAfterlast(); -getColumnName(); -getColumnnames(); Cursor c = db.rawQuery(“select * from Student_demo”,null); c.moveToFirst(); While(c.isAfterLast()) { Toast.makeText(context, c.getString(1),200).show(); c.moveToNext(); }

  19. CursorAdapter • class studentAdapter extends CursorAdapter • public studentAdapter(Context context, Cursor c) • public void bindView(View view, Context context, Cursor cursor) • public View newView(Context context, Cursor cursor, ViewGroup parent) • public void creatView(final View view,Cursor c)

More Related