라이브러리 다운
react-native-sqlite-storage
android/settions.gradle에 추가
include ':react-native-sqlite-storage'
project(':react-native-sqlite-storage').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sqlite-storage/platforms/android')
android/app/build.gradle에 추가
implementation project(':react-native-sqlite-storage')
app/src/main/java/{package}/MainApplication.java에 추가
그런데 공식문서에서는 하라고 되어있는데 오히려 추가하면 에러가 남
이 부분은 안해도 잘 되었음
// 제일 위에
import org.pgsqlite.SQLitePluginPackage
// 해당 부분에
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
packages.add(new SQLitePluginPackage()); // 이 줄 추가
return packages;
}
app/src/main/assets/www 경로에 db파일 추가(예시 : testDB.db)
코드
import SQLite from 'react-native-sqlite-storage';
// 데이터 베이스 열기
const db = SQLite.openDatabase(
{name: 'testDB.db', createFromLocation: '~testDB.db'},
successCB,
errorCB,
);
function successCB() {
console.log('데이터베이스가 성공적으로 열렸습니다.');
}
function errorCB(err) {
console.log('데이터베이스 열기 오류:', err);
}
// 테이블 생성
const createTable = () => {
db.transaction(tx => {
tx.executeSql(
'CREATE TABLE IF NOT EXISTS testTable (id INTEGER PRIMARY KEY AUTOINCREMENT, column1 TEXT, column2 TEXT)',
[],
() => {
console.log('테이블 생성 완료');
},
error => {
console.error('테이블 생성 오류:', error);
},
);
});
};
// 데이터 저장
const saveDataToDatabase = data => {
db.transaction(tx => {
// 데이터베이스에 쿼리 실행
tx.executeSql(
'INSERT INTO testTable (column1, column2) VALUES (?, ?)',
[data.column1, data.column2], // 데이터 값
(tx, results) => {
if (results.rowsAffected > 0) {
console.log('데이터가 성공적으로 저장되었습니다.');
} else {
console.log('데이터 저장에 실패했습니다.');
}
},
error => {
console.error('데이터 저장 오류:', error);
},
);
});
};
const dataToSave = {
column1: 'Value1',
column2: 'Value2',
};
saveDataToDatabase(dataToSave)
// 데이터 불러오기
const loadDataFromDatabase = () => {
db.transaction(tx => {
// 데이터베이스에서 데이터 불러오기
tx.executeSql(
'SELECT * FROM testTable',
[],
(tx, results) => {
const rows = results.rows;
const data = [];
for (let i = 0; i < rows.length; i++) {
const item = rows.item(i);
data.push(item);
}
console.log('데이터 불러오기 성공:', data);
},
error => {
console.error('데이터 불러오기 오류:', error);
},
);
});
};
db파일을 드라이브에 업로드하고 싶은데
db파일이 존재하는 assets폴더는 fs로 직접 접근이 안되서 어떻게 해야할지 모르겠음
'RN' 카테고리의 다른 글
FlatList 격자형태로 이쁘게 나열하기 (0) | 2023.12.08 |
---|---|
style 따로 빼서 쓰기 (0) | 2023.12.07 |
구글드라이브에 업로드 (0) | 2023.12.04 |
구글 로그인 (0) | 2023.12.01 |
RN & expo 배포 (0) | 2023.11.30 |