Android中使用sqlite資料庫實現物件的儲存
阿新 • • 發佈:2019-01-10
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.name2.資料庫建立= name; } public String getId() { return id; } public void setId(String id) { this.id = id; } }
public class MyDbHelper extends SQLiteOpenHelper{ private static MyDbHelper dbhelper = null; public static MyDbHelper getInstens(Context context) { if3.資料庫的輔助類(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, intversion) { 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) { } }
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(); } }); } }