ใน Android นั้นจะใช้ SQLite เป็น Databases ซึ่งจะต้องเข้าผ่านทาง adb
เริ่มแรกตรงส่วนนี้
public DbExpend(Context context) { super(context, "test.db", null,1); }
จะเป็นการสร้างฐานข้อมูลชื่อ test.db โดยที่ให้เป็น 1 คือ Version นั่นเอง
public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub
}
ตรงนี้ก็จะเป็นตอนเริ่มโปรแกรมว่าเราจะให้ทำอะไร ก็ตาม Code ด้านล่างเลยครับ
ตอนสร้างในนี้ก็จะทำการใส่ SQL Command เข้าไป
DbExpend.java
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; public class DbExpend extends SQLiteOpenHelper { public DbExpend(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } public DbExpend(Context context) { super(context, "test.db", null,1); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } @Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE EXPEND ("+ "ID INTEGER NOT NULL PRIMARY KEY ,"+ "TYPE VARCHAR(30) NOT NULL ,"+ "NAME VARCHAR(30) NOT NULL ,"+ "MONEY DOUBLE NOT NULL ,"+ "DATE DATE NOT NULL );"; db.execSQL(sql); } }
อันนี้เป็นไฟล์ DataLayer.java ไว้จัดการ Databases
import java.util.ArrayList; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; public class DataLayer { private DbExpend _dbHelper; public DataLayer(Context c) { _dbHelper = new DbExpend(c); } public void AddExpend(String TYPE,String NAME,double MONEY,String DATE) { SQLiteDatabase db = _dbHelper.getWritableDatabase(); try { ContentValues values = new ContentValues(); values.put("TYPE", TYPE); values.put("NAME", NAME); values.put("MONEY", MONEY); values.put("DATE", DATE); db.insert("EXPEND", "", values); } finally { if (db != null) db.close(); } } public ArrayList<ResultExpend> SelectExpend() { SQLiteDatabase db = _dbHelper.getReadableDatabase(); try { ArrayList<ResultExpend> results = new ArrayList<ResultExpend>(); Cursor c = db.rawQuery("SELECT * FROM EXPEND",null); if (c.getCount()>0) { c.moveToFirst(); do { results.add(new ResultExpend(c.getInt(0),c.getString(1),c.getString(2), c.getDouble(3),c.getString(4))); } while (c.moveToNext()); } return results; } finally { if (db != null) db.close(); } } public void UpdateExpend(double moneyupdate) { SQLiteDatabase db = _dbHelper.getWritableDatabase(); try { ContentValues values = new ContentValues(); values.put("MONEY", moneyupdate); int affected = db.update("EXPEND", values, null, null); } finally { if (db != null) db.close(); } } public void DeleteEXPEND(int id) { SQLiteDatabase db = _dbHelper.getWritableDatabase(); try { int recordsDeleted = db.delete("EXPEND", "ID ="+id, null); } finally { if (db != null) db.close(); } } }
อันนี้ ResultExpend.java เป็นสร้างไว้เก็บข้อมูลจาก Databases
public class ResultExpend { private int id; private String type; private String name; private double money; private String date; public ResultExpend(int id, String type, String name, double money,String date) { super(); this.id = id; this.type = type; this.name = name; this.money = money; this.date = date; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } }
เวลาเรียกใช้
DataLayer d = new DataLayer(getBaseContext()); ArrayList<ResultExpend> result = new ArrayList<ResultExpend>(); result = d.SelectExpend(); for(int i = 0;i<result.size();i++){ Log.i("EXPEND","ID :"+result.get(i).getId()); Log.i("EXPEND","TYPE :"+result.get(i).getType()); Log.i("EXPEND","NAME :"+result.get(i).getName()); Log.i("EXPEND","MONEY :"+result.get(i).getMoney()); Log.i("EXPEND","DATE :"+result.get(i).getDate()); }
ส่วนการเข้าไปดูในส่วนของ Database นั้นลองหาตัวอ่าน SQLite ใน window ดูนะครับ ขอบคุณที่แวะเข้ามาครับ ถ้ามีอะไรอยากถามก็โพสถามได้นะครับเช็คทุกวัน ถ้ามีเวลาจะพยายามตอบให้ เคยลองเขียนเกี่ยวกับเรื่อง Map Navigation อยู่บ้าง ออไปดูโปรแกรมที่ผมลองเขียนเล่นได้ที http://javadroids.blogspot.com/2011/09/program-xexplorer.html
สวัสดีค่ะ คือว่าดิฉันกำลังพัฒนา App ของ android ที่ต้องเชื่อมต่อกับฐานข้อมูล แบบว่าเพิ่งเริ่ม แต่สงสัยว่าการจัดการฐานข้อมูล สามารถใช้วิธีอื่นนอกจากเขียนโค้ดควบคุมได้ไหมค่ะ เหมือนกับเขียน php แล้วใช้ dbms ของ phpmyadmin หนะค่ะ
ตอบลบโปรแกรม SQLite Databases Browser ครับ โหลดได้จาก http://sourceforge.net/projects/sqlitebrowser/
ตอบลบวิธีใช้คร่าวๆ http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
วิธีใส่เข้าไป http://www.boringmonday.com/jc/2010/11/22/sqlite-database-on-your-android-emulator/
ลองทำดูนะครับ ตัวผมเองนั้น ใช้เป็น adb shell อาจจะดูลำบากหน่อยแต่ก็ละเอียดดีครับ
http://stackoverflow.com/questions/1964077/how-can-you-access-the-contents-of-android-emulator-databases
SQLite Add-ons for Firefox
ตอบลบhttps://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/
ขอบคุณมากเลยนะคะ สำหรับคำตอบ ตอนนี้กำลังศึกษาและพยายามทำอยู่ค่ะ
ตอบลบคือผมอยากทราบว่า ที่คุณทำจากโค้ด คือเป็นสร้างดาต้าเบสโดยใช้โค้ด ใช่ไหมคับ
ตอบลบคือผมเพิ่งหัดทำแอ๊นดอย แล้วที่คุณทำ มันไม่ได้มีฐานข้อมูลอยู่แล้วใช่ไหมอะคับ
แต่คุณเพิ่งสร้างจากโค้ดเอาไหมคับ
ใช่ครับสร้างจากโคดเอา เมื่อเราสร้างดาต้าเบสแล้วภายในแอพเช่นชื่อ "DB1" ในแอพนั้นก็จะใช้ชื่อนี้ในการเรียกใช้
ลบจนกว่าจะลงแอพใหม่หรือ Clear Data ของแอพอันนี้ข้อมูลจะหายหมด
ส่วนถ้าเราทำการ Update แล้วดาต้าเบสของเราก็ยังอยู่นะครับ สามารถสร้างได้หลายๆ ดาต้าเบส
ส่วนการสร้างก็สามารถสร้างภายนอกได้แล้วทำการไปใส่ในภายหลังได้ หรือสร้างผ่าน ADB ลองหาดูใน
Google ครับ