ปีกของ Android mucchin | จัดเก็บข้อมูลที่เกี่ยวข้องกับ



ค้นหาการใช้งานบันทึก Hen ของ "SQLite" วิธีหนึ่งในการบันทึกข้อมูลของ Android Apps


โดยใช้ฐานข้อมูล "SQLite" ของ Android?

นี้จะเป็นผลสืบเนื่องของบทความต่อไปนี้
การใช้ Hen SQLiteOpenHelper หนึ่ง "SQLite" ของวิธีการจัดเก็บข้อมูล Android app
แก้ไขปรับปรุงและลบบรรทัดเพิ่มเติมของวิธีการใช้ "SQLite" วิธีหนึ่งในการบันทึกข้อมูลของ Android Apps

ที่ทำให้เรามีและรายละเอียดของฐานข้อมูลที่เปิดสำหรับการปรับปรุงและมีการบันทึกลบเพิ่ม
เวลานี้เราจะอธิบายการค้นหาคำสั่งเลือกระเบียนที่อ้างถึงใน SQL
ไม่สามารถพูดได้โดยไม่มีเงื่อนไขผมคิดว่าในการจัดการกับฐานข้อมูลที่มีจำนวนมากในฉากที่จะใช้มากที่สุดของรหัสที่มีและฉันไม่เลือกนี้


โค้ดตัวอย่างที่แสดงจากนี้คือ " การใช้ Hen SQLiteOpenHelper จาก SQLite "วิธีหนึ่งในการบันทึกข้อมูลของแอพพลิเค Android" คุณจะอยู่ที่รหัสตัวอย่างในการที่จะสร้างอินสแตนซ์อยู่แล้วประเภท SQLiteDatabase
ชื่อตัวแปรและ SDB
นอกจากนี้การกำหนดตารางใน "bookmarklist" ชื่อตารางและคอลัมน์ของ 2 ที่คอลัมน์และแถว _id บุ๊คที่มีอยู่
※สำหรับคอลัมน์ _id, บทความ "อีก จุดที่ควรทราบเมื่อใช้ SQLite ในการสร้างตารางในการประยุกต์ใช้ Android โปรดดูที่ "


หลังจากการค้นหาระเบียนแสดงผลการค้นหาก็จะถูกส่งกลับเป็นอินสแตนซ์ที่เรียกว่า Cursor
วิธีการที่จะได้รับกรณีนี้ Cursor เนื่องจากมีสองใหญ่ผมจะแสดงวิธีการแรกที่

ใช้ (SQLiteDatabase.query)

วิธีการอย่างใดอย่างหนึ่งก่อนจะบอกให้คุณถึงวิธีการใช้ () ก่อน SQLiteDatabase.query


สุดท้าย String [] = คอลัมน์ใหม่ String [] {"_id", "บุ๊ค"};
String ที่ = "มาร์คเช่น";
พระราม String = "%% หุ่นยนต์";
Cursor c =
sdb.query ("bookmarklist", คอลัมน์ที่, String ใหม่ที่เป็น [] {} พระราม,
null, null, "_id desc", "10");


อาร์กิวเมนต์แรก () วิธีการคือ SQLiteDatabase.query ชื่อตาราง
อาร์กิวเมนต์ที่สองระบุชื่อคอลัมน์เพื่อดึง (ชื่อคอลัมน์ชื่อเขต) อาร์เรย์ของ
บันทึกระบุเกณฑ์สำหรับอาร์กิวเมนต์ที่สาม, อาร์กิวเมนต์ที่สี่ที่จะได้รับ
เวลานี้เรามีสภาพที่เป็นสตริงที่ประกอบด้วยวลี "หุ่นยนต์" กับสตริงของที่คั่นหน้า
อาร์กิวเมนต์ที่ห้าระบุกลุ่มคำสั่งตาม
อาร์กิวเมนต์ที่หกระบุคำสั่ง HAVING
อาร์กิวเมนต์ที่เจ็ดระบุลำดับคำสั่งโดย
อาร์กิวเมนต์ที่แปดคุณระบุวงเงินตามข้อ (จำนวนสูงสุดของระเบียนที่จะถูกดึง)
หากคุณไม่ต้องการที่จะใช้ระบุโมฆะ
และเพื่อเป็นการแสดงนี้ในการประมวลผลคำสั่ง SQL จะเป็นดังนี้


เลือก _id, บุ๊ค
จาก bookmarklist
ที่คั่นหน้าเช่น '%% หุ่นยนต์'
สั่งซื้อโดย _id desc
จำกัด 10


วิธีการใช้งานวัตถุ Cursor อธิบายไว้ด้านล่าง

ใช้ (SQLiteDatabase.rawQuery)

ต่อไปนี้อธิบายวิธีการใช้ (rawQuery วิธีการ) ดังนั้น
วิธีการ rawQuery () เป็นตัวอักษรให้ใช้แบบสอบถามดิบ


String sqlstr = "เลือก _id, บุ๊คมาร์ค" +
"จาก bookmarklist" +
"ที่คั่นหน้าเช่น '% Android%'" +
"สั่งซื้อโดย _id desc" +
"จำกัด 10";
Cursor c = sdb.rawQuery (sqlstr);


() อาร์กิวเมนต์วิธีที่เป็นคำสั่ง SQL SQLiteDatabase.rawQuery
ส่วนตัวผมคิดว่า แต่ใช้งานง่ายกว่าวิธีการใช้แบบสอบถาม () ของดังกล่าวข้างต้นสิ่งที่ถ้า
แบบสอบถาม () method หมายถึงมันเป็นที่ดีถ้าคุณได้ให้ค่าของสิ่งที่ซึ่งขัดแย้ง? ฉันดูเหมือนจะไม่เป็นและไม่ควรตรวจสอบและวิธีการ Ichiichi () เป็น rawQuery ชัดเจน
นอกจากนี้เช่นการใช้รวมภายนอกด้านซ้ายและด้านในการเข้าร่วมเมื่อ SQL เป็นเหมือนการเข้าร่วมหลายตารางคุณจะดีกว่าจาก () rawQuery นี้

มันอาจจะเป็นความรักความรัก, SQL ของปริญญาที่ใช้ใน Android app ดูเหมือนจะไม่ยากดังนั้นผมคิดว่า () rawQuery สามารถรัน SQL ดิบและไม่ว่ามันจะไม่อ่านง่ายดี
ส่วนตัวผมเป็นที่สิ้นสุด

บังเอิญ () เป็นคำสั่งเพียงเลือก rawQuery
แทรก update, ลบ, ฯลฯ ให้ใช้วิธี () execSQL
สำหรับข้อมูลเพิ่มเติมกรุณาดูที่ด้านล่าง
แก้ไขปรับปรุงและลบบรรทัดเพิ่มเติมของวิธีการใช้ "SQLite" วิธีหนึ่งในการบันทึกข้อมูลของ Android Apps




ดังนั้นให้ดูที่การใช้งานพื้นฐานของอินสแตนซ์ Cursor

การใช้อินสแตนซ์ Cursor

ผมคิดว่าโดยทั่วไปและการใช้งานที่จะทำอะไรบางอย่างตั้งแต่ต้นจนจบในวงด้วยการเปลี่ยนระเบียนที่ดึงมา
โปรดดูตัวอย่างรหัสเช่นตัวอย่างต่อไปนี้


/ / Execute () rawQuery หรือ () แบบสอบถาม
เลือกได้ - Cursor c =;

ถ้า (c.moveToFirst ()) {
ทำ {
นาน id = c.getLong (c.getColumnIndex ("_id"));
บุ๊คมาร์ค String = c.getString (c.getColumnIndex ("บุ๊คมาร์ค"));
System.out.println (id + ":" + ที่คั่น);
} ในขณะที่ (c.moveToNext ());
}


แต่นั่นเป็นเพียงออกมาตรฐานระเบียนทั้งหมดที่ได้รับเพียงแค่เราลองมาดูที่มาจากข้างบน
ครั้งแรกในประโยคแรกถ้ามีการเรียกใช้ () Cursor. MoveToFirst
ซึ่งหมายความว่าเลื่อนเคอร์เซอร์ไปที่จุดเริ่มต้นสำหรับผลที่ได้
ทรูจะกลับหากประสบความสำเร็จ
การประมวลผลที่ตามมาก็คือการดำเนินการ () หลังจากความสำเร็จของ moveToFirst นี้
อนึ่งถ้าจำนวนของระเบียนที่ดึงมาจาก 0, () ค่าตอบแทนจะ moveToFirst เท็จ

ถัดไปก็เป็นห่วงหลังจากการตัดสิน
ความหมายคือ Cursor. sibling กระบวนการ MoveToNext () เรียกว่าย้ายเคอร์เซอร์ไปยังระเบียนถัดไป
ค่าตอบแทน () กลับทรูมูฟเคอร์เซอร์ถ้ามีการบันทึกต่อไปนี้ sibling กระบวนการ MoveToNext
กลับเท็จหากไม่มีระเบียนถัดไป
โดยวิธีการและว่าหลังจากการตัดสินสำหรับการประมวลผลของระเบียนแรกมาก

การแปรรูปเพื่อแยกเนื้อหาของบันทึกตามประเภทของแต่ละคอลัมน์การใช้งานและอื่น ๆ () getInt) getString (), getLong (
อาร์กิวเมนต์เป็นดัชนีลงในคอลัมน์ไม่ว่าจะในคอลัมน์ที่สองในระยะสั้นคืออะไร หมายเลขคือ
นี้มีชื่อของชื่อคอลัมน์คุณจะได้รับใน () getColumnIndex

วงเวียนเป็นข้อกำหนด·อย่างคลุมเครือ
ไม่ได้ใช้ผมเป็นเกินพิกัดถึงแม้ว่าคุณระบุชื่อของคอลัมน์ในการโต้เถียงทำไม? เพียงแค่อยากจะบอก
แน่นอนถ้าคุณรู้ว่าดัชนี แต่ยังดีที่เขียนโดยไม่มีช่องว่างโดยไม่ต้องใช้วิธีการที่จะทำงานอย่างถูกต้องแม้ว่าผมจะเปลี่ยนนิยามตารางอยู่ตรงกลางพวกเขาต้องการดีกว่าที่จะนำมาใช้เป็นเวลานี้ ผมคิดว่าไม่ว่าจะเป็นไม่ได้


ฉันคิดว่าในเช่น servlet หรือ JSP และคุณสามารถเข้าใจได้โดยไม่ยากถ้าคุณมีประสบการณ์ในระบบการใช้ DB
แต่ก็เป็นความเข้าใจของฉันที่ตัวมือถือและจนถึงตอนนี้ผมไม่ได้จัดการกับฐานข้อมูลหรือสิ่งที่ได้เข้าใจกันโดยทั่วไป

2 3 4 5 ... Last » หน้า 8 จากหนึ่ง ในสอง 3 สี่ 5 ... ล่าสุด»