상세 컨텐츠

본문 제목

[Android] .db파일 Android App에 넣기(JAVA)

IT Convergence Engineering/AI 버섯 어플

by Soo_buglosschestnut 2020. 8. 29. 01:08

본문

.db파일 Android App에 넣기(JAVA)


  • .db파일 Android App에 넣기

1. 먼저 assets 폴더를 만들어 줘야한다!! (assets 폴더 없으면 다음 링크를통행 assets 폴더 만들기!)

 

bugloss-chestnut.tistory.com/entry/Android-h5-pb-tflite%EB%A1%9C-%EB%B3%80%ED%99%98-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%EC%97%90-%EC%A0%81%EC%9A%A9

 

[Tensorflow & Android] .h5 -> .pb -> .tflite로 변환 & 안드로이드에 적용(python & java)

.h5 -> .pb -> .tflite로 변환 & 안드로이드에 적용(python & java) 1. .h5 -> .pb -> .tflite로 변환 .h5 파일 -> .pb 파일로 변환하기 (코드) from tensorflow import keras model = keras.models.load_model(..

bugloss-chestnut.tistory.com

 

2. assets 폴더를 만들면 그 안에 ####.db 파일을 넣어준다.

db 파일!

↑ 위와 같이 assets 폴더에 잘 넣어준다~

 

 

3. db파일을 잘 넣어줬다면 이제 안드로이드 app에서 코드 넣어볼 차례!

 

  • .db 파일 불러오는 Code
// DB파일 불러오는 함수
// assets 폴더에 db파일 넣어주면됨~

public static final String ROOT_DIR = "/data/data/com.~~~~~/databases/";

    public static void setDB(Context ctx) {
        File folder = new File(ROOT_DIR);
        if(folder.exists()) {
        } else {
            folder.mkdirs();
        }
        AssetManager assetManager = ctx.getResources().getAssets();
        // db파일 이름 적어주기
        File outfile = new File(ROOT_DIR+"######.db");
        InputStream is = null;
        FileOutputStream fo = null;
        long filesize = 0;
        try {
            is = assetManager.open("######.db", AssetManager.ACCESS_BUFFER);
            filesize = is.available();
            if (outfile.length() <= 0) {
                byte[] tempdata = new byte[(int) filesize];
                is.read(tempdata);
                is.close();
                outfile.createNewFile();
                fo = new FileOutputStream(outfile);
                fo.write(tempdata);
                fo.close();
            } else {}
        } catch (IOException e) {

        }
    }

 

public static final String ROOT_DIR = "/data/data/com.~~~~~/databases/";

→ ~~~~~~에는 자신의 adroid package명을 써준다!

 

File outfile = new File(ROOT_DIR+"######.db");

is = assetManager.open("######.db", AssetManager.ACCESS_BUFFER);

→ ######에는 자신의 .db 파일의 이름을 써준다!

 

  • cursor를 통해 .db파일에 있는 내용 보여주는 Code
// Cursor를 통해 .db파일의 내용을 보여주는 함수

 public SQLiteDatabase db;
 public Cursor cursor;
 ProductDBHelper mHelper;
 String DBname = "######";
    
    private void ShowMushDBInfo(String name){
        setDB(this);

        mHelper=new ProductDBHelper(this);
        db =mHelper.getWritableDatabase();

        String mushname = null;
        String mushtype= null;
        String mushsym = null;
        String mushsim = null;
        
        String sql = "Select * FROM " + DBname;
        cursor = db.rawQuery(sql , null);

        while (cursor.moveToNext()) {
            if(cursor.getString(1).equals(name)) {
                mushname = cursor.getString(1);
                mushtype = cursor.getString(2);
                mushsym = cursor.getString(3);
                mushsim = cursor.getString(4);
            }
        }

        mname.setText(mushname);
        mtype.setText(mushtype);
        msym.setText(mushsym);
        msim.setText(mushsim);

    }

→ Textview에 내용들이 뜨게 해줬음~

 

 String DBname = "######";

→ ######에는 SQLite로 만들때 테이블 이름을 적는다~

 

.db파일 테이블 총 5가지로 생성!

 

String sql = "Select * FROM " + DBname;
        cursor = db.rawQuery(sql , null);

        while (cursor.moveToNext()) {
            if(cursor.getString(1).equals(name)) {
                mushname = cursor.getString(1);
                mushtype = cursor.getString(2);
                mushsym = cursor.getString(3);
                mushsim = cursor.getString(4);
            }
        }

→ DBname의 테이블에서 cursor로 테이블에 있는 내용 가르쳐줘서 그걸 textview 띄워주겠다라는 Code

→ cursor.getString(0) 부터 시작 !! but 나는 _ID는 필요없기때문에 cursor.getString(1) 부터 시작했다~

 

  • SQLiteOpneHelper.java class 생성하기!
package com.~~~~~~;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class ProductDBHelper extends SQLiteOpenHelper {  //새로 생성한 adapter 속성은 SQLiteOpenHelper이다.
    public ProductDBHelper(Context context) {
        super(context, "######.db", null, 1);    // db명과 버전만 정의 한다.
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
    }
}

 

package com.~~~~~~;

→ ~~~~~~에는 자신의 adroid package명을 써준다.

 

super(context, "######.db", null, 1);    // db명과 버전만 정의 한다.

→ ######에는 자신의 .db 파일의 이름을 써준다.

 

 

  • DB Browser for SQLite에서 SQL로 data insert 해주는 방법
INSERT INTO ######
VALUES (1,'~~~~~~', '~~~~~~', '~~~~~~','~~~~~~');

###### 에는 자신의 db 파일 table name을 적어준다.

~~~~~~에는 자신이 입력할 내용을 적는다.

 

 

  • 참고: SQL문 기본 문법 

gmlwjd9405.github.io/2019/05/13/db-sql-insert-update-delete.html

 

[DB] SQL문 기본 문법 - 데이터 추가, 삭제, 갱신 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

 

출처: egloos.zum.com/adamjin/v/2875879

 

assets에 db넣고 사용하기 -개념이해-

assets에 db를 넣고 사용하는 방법은 두가지가 있다.Adapter를 사용하는 방법과 Activity에 Adapter를 생성해서 사용하는 방법이다.두가지 상황에 맞춰서 assets의 db를 불러오는 방법의 차이점을 아래의 ��

egloos.zum.com


ⓐ 양자화 올리기...

bugloss-chestnut.tistory.com/entry/Tensorflow-tflite%EB%A5%BC-Quantization%EC%96%91%EC%9E%90%ED%99%94%ED%95%98%EA%B8%B0python

 

[Tensorflow] .tflite를 Quantization(양자화)하기(python)

.tflite를 Quantization(양자화)하기(python) Python API는 quantization 옵션을 제공한다. 양자화는 float32로 학습된 weight값들을 단순화 시키는 작업을 말한다. 이 작업을 하게되면 .tflite이 파일크기가 대략..

bugloss-chestnut.tistory.com

 

관련글 더보기