1. 程式人生 > >Android中使用sqlite資料庫實現物件的儲存

Android中使用sqlite資料庫實現物件的儲存

1。物件類

public class Student implements Serializable{
    String name;
    String id;

    public Student(String name, String id) {
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name 
= name; } public String getId() { return id; } public void setId(String id) { this.id = id; } }
2.資料庫建立
public class MyDbHelper extends SQLiteOpenHelper{
    private static MyDbHelper dbhelper = null;
    public static MyDbHelper getInstens(Context context) {
        if 
(dbhelper == null) { dbhelper = new MyDbHelper(context); } return dbhelper; } private MyDbHelper(Context context) { super(context, "datebase.db", null, 1); // TODO Auto-generated constructor stub } public MyDbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int
version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { String sql_class_table="create table if not exists classtable(_id integer primary key autoincrement,classtabledata text)"; sqLiteDatabase.execSQL(sql_class_table); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } }
3.資料庫的輔助類
public class StudentService {
    Context context;

    public StudentService(Context context) {
        // TODO Auto-generated constructor stub
this.context = context;
    }

    /**
     * 儲存
     * @param student
*/
public void saveObject(Student student) {
        ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
        try {
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(arrayOutputStream);
            objectOutputStream.writeObject(student);
            objectOutputStream.flush();
            byte data[] = arrayOutputStream.toByteArray();
            objectOutputStream.close();
            arrayOutputStream.close();
            MyDbHelper dbhelper = MyDbHelper.getInstens(context);
            SQLiteDatabase database = dbhelper.getWritableDatabase();
            database.execSQL("insert into classtable (classtabledata) values(?)", new Object[] { data });
            database.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
e.printStackTrace();
        }
    }

    public Student getObject() {
        Student student = null;
        MyDbHelper dbhelper = MyDbHelper.getInstens(context);
        SQLiteDatabase database = dbhelper.getReadableDatabase();
        Cursor cursor = database.rawQuery("select * from classtable", null);
        if (cursor != null) {
            while (cursor.moveToNext()) {
                byte data[] = cursor.getBlob(cursor.getColumnIndex("classtabledata"));
                ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(data);
                try {
                    ObjectInputStream inputStream = new ObjectInputStream(arrayInputStream);
                    student = (Student) inputStream.readObject();
                    inputStream.close();
                    arrayInputStream.close();
                    break;//這裡為了測試就取一個數據
} catch (Exception e) {
                    // TODO Auto-generated catch block
e.printStackTrace();
                }

            }
        }
        return student;

    }
}
4.測試類
public class MainActivity extends AppCompatActivity {
StudentService service;
    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        service = new StudentService(this);
        Button button1= (Button) findViewById(R.id.button);
        Button button2= (Button) findViewById(R.id.button2);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View view) {
                service.saveObject(new Student("李雷", "20"));
                Toast.makeText(getApplicationContext(), "存取完成", Toast.LENGTH_SHORT).show();

            }
        });
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View view) {
                Student student =  service.getObject();
                if(student!=null)
                    Toast.makeText(getApplicationContext(), student.getName()+student.getId(), Toast.LENGTH_SHORT).show();
            }
        });


    }
}