티스토리 뷰
build.gradle
1 2 | compile 'com.j256.ormlite:ormlite-core:5.0' compile 'com.j256.ormlite:ormlite-android:5.0' | cs |
domain.Memo.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | @DatabaseTable(tableName = "memo") // Generate Table Annotation public class Memo { @DatabaseField(generatedId = true) // PRIMARY KEY AUTO INCREMENT int id; @DatabaseField String title; @DatabaseField String contents; public Memo( String contents){ this.contents = contents; } public int getId() { return id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContents() { return contents; } public void setContents(String contents) { this.contents = contents; } } | cs |
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button btnCreate,btnRead,btnUpdate,btnDelete; EditText editNo, editMemo; TextView textList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } private void create() throws java.sql.SQLException { // // Database 파일 연결을 위한 DBHelper 생성 (싱글턴방법) // OrmLiteHelper ormLiteHelper = OpenHelperManager.getHelper(context, OrmLiteHelper.class); // 1. DB 연결 OrmLiteHelper dbHelper = new OrmLiteHelper(this); // 2. Table 연결 Dao<Memo, Integer> memoDao = dbHelper.getDao(Memo.class); // 3. 입력값 화면에서 가져와서 변수에 담고 String memo = editMemo.getText().toString(); // 4. 변수에 담긴 입력값으로 domain 클래스 생성자에 대입한 후 DB 에 입력 memoDao.create(new Memo(memo)); // DB insert!!! // 5. DB 연결 해제 dbHelper.close(); // 6. create 후에 화면에서 글자를 지워준다 editMemo.setText(""); read(); } @Override public void onClick(View v) { try { switch (v.getId()) { case R.id.btnCreate: create(); break; case R.id.btnRead: read(); break; case R.id.btnUpdate: update(); break; case R.id.btnDelete: delete(); break; } }catch(Exception e){ e.printStackTrace(); } } private void read() throws SQLException{ OrmLiteHelper dbHelper = new OrmLiteHelper(this); Dao<Memo, Integer> memoDao = dbHelper.getDao(Memo.class); // 데이터를 전체 읽어와 화면에 뿌려준다 List<Memo> list = memoDao.queryForAll(); String temp = ""; // 데이터를 한줄씩 읽어서 임시 변수인 temp에 저장한다. for(Memo memo : list){ temp = temp + "no:" + memo.getId() + ", " + memo.getContents() + "\n"; } // 화면에 temp 변수의 내용을 뿌려준다 textList.setText(temp); dbHelper.close(); List<Memo> list1 = memoDao.queryForEq("title", "백향목"); } private void update() throws SQLException{ int no = Integer.parseInt(editNo.getText().toString()); String temp = editMemo.getText().toString(); OrmLiteHelper dbHelper = new OrmLiteHelper(this); Dao<Memo, Integer> memoDao = dbHelper.getDao(Memo.class); // 1. 변경할 레코드를 가져온다 Memo memo = memoDao.queryForId(no); // 2. 변경한 값을 입력한다 memo.setContents(temp); // 3. Table 에 반영한다 memoDao.update(memo); dbHelper.close(); read(); } private void delete() throws SQLException{ int no = Integer.parseInt(editNo.getText().toString()); OrmLiteHelper dbHelper = new OrmLiteHelper(this); Dao<Memo, Integer> memoDao = dbHelper.getDao(Memo.class); memoDao.deleteById(no); dbHelper.close(); read(); } // rawQuery 사용시 public List<Memo> select(String rawQuery) { List<Memo> datas = null; try { OrmLiteHelper ormLiteHelper = OpenHelperManager.getHelper(this, OrmLiteHelper.class); Dao<Memo, Integer> dao = ormLiteHelper.getDao(); GenericRawResults<Memo> genericRawResults = dao.queryRaw(rawQuery, dao.getRawRowMapper()); datas = genericRawResults.getResults(); } catch (SQLException e) { e.printStackTrace(); } return datas; } private void setWidget(){ btnCreate = (Button) findViewById(R.id.btnCreate); btnRead = (Button) findViewById(R.id.btnRead); btnUpdate = (Button) findViewById(R.id.btnUpdate); btnDelete = (Button) findViewById(R.id.btnDelete); editNo = (EditText) findViewById(R.id.editNo); editMemo = (EditText) findViewById(R.id.editMemo); textList = (TextView) findViewById(R.id.list); } private void setListener(){ btnCreate.setOnClickListener(this); btnRead.setOnClickListener(this); btnUpdate.setOnClickListener(this); btnDelete.setOnClickListener(this); } } | cs |
OrmLiteHelper.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | public class OrmLiteHelper extends OrmLiteSqliteOpenHelper{ private static final String DB_NAME = "database.db"; private static final int DB_VERSION = 1; //The data access object (DAO) used to interact with the Sqlite database to do C.R.U.D operations. //Data Access Object, Data 클래스를 접근할 수 있는 객체, 테이블을 조작하기 위한 객체 // private Dao<Memo, Long> dao = null; // ID의 기본타입은 Long private Dao<Memo, Integer> dao = null; // 값 - 키 형태의 제네릭 public OrmLiteHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); //여기서 파일이 있는지 확인함. } @Override // DB 파일 q없을 때 최초 호출 public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Memo.class); // 해당 클래스로 자동으로 DB 파일 생성 } catch (SQLException e) { e.printStackTrace(); } catch (java.sql.SQLException e) { e.printStackTrace(); } } @Override //DB 버전이 바뀐경우 실행 public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { if(oldVersion == 1) { // TableUtils.createTable(connectionSource, addTable.class); } else // onCreate()를 호출해서 테이블 생성 onCreate(database, connectionSource); } public Dao<Memo, Integer> getDao() throws java.sql.SQLException { // OrmLiteHelper 를 싱글턴으로 사용하기 때문에, dao 객체도 열어놓고 사용가능 if(dao == null) // getDao(Class<T> clazz) Data.class 를 통해 Dao 반환 dao = getDao(Memo.class); return dao; } } | cs |
main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.hm.orm.MainActivity"> <Button android:text="Create" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:id="@+id/btnCreate" /> <Button android:text="Read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/btnCreate" android:layout_toEndOf="@+id/btnCreate" android:id="@+id/btnRead" /> <Button android:text="Update" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/btnRead" android:layout_toEndOf="@+id/btnRead" android:id="@+id/btnUpdate" /> <Button android:text="Delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/btnUpdate" android:layout_toEndOf="@+id/btnUpdate" android:id="@+id/btnDelete" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:layout_below="@+id/editNo" android:layout_alignLeft="@+id/editNo" android:layout_alignStart="@+id/editNo" android:id="@+id/editMemo" android:hint="Input Memo" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:id="@+id/editNo" android:hint="No" android:layout_below="@+id/btnCreate" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:text="list..." android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/editMemo" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:id="@+id/list" /> </RelativeLayout> | cs |
'ANDROID > android' 카테고리의 다른 글
취약점별 상세 진단 - Broadcast Receiver 결합 (0) | 2017.05.26 |
---|---|
안드로이드 앱 진단[Drozer 사용법] (0) | 2017.05.25 |
Android - push 알림 (notification) (0) | 2016.12.12 |
Android - Alert 창 띄우기 (0) | 2016.12.02 |
Android - phone 번호 가져오기 (0) | 2016.11.30 |
Comments