/** * Sample React Native App * https://github.com/facebook/react-native * * @format * @flow strict-local */ import React, {useEffect, useState} from 'react'; import {SafeAreaView, StyleSheet, Text, View, FlatList} from 'react-native'; import {DEBUG, enablePromise, openDatabase} from 'react-native-sqlite-storage'; DEBUG(true); enablePromise(true); const db = openDatabase({ name: 'TestDB', location: 'default', createFromLocation: '~TestDB.db', // android/src/main/assets/TestDB.db 파일을 위치 시킴 }); const App = () => { const [users, setUsers] = useState([]); const populateDatabase = async DB => { await DB.transaction(queryUser); // 반드시 (await db)를 해야 프라미스가 성공 }; const loadAndQueryDB = async () => { try { console.log('load and db query ....'); await populateDatabase(await db); } catch (error) { console.log(error); } }; const closeDatabase = async DB => { if (DB) { console.log('closing database ...'); try { (await DB).close( () => { console.log('Database was closed successfully'); }, err => console.log(err), ); } catch (error) { console.log(error); } } else { console.log('Database was not opened'); } }; const queryUser = async tx => { console.log('Excuting user query'); try { const [txn, results] = await tx.executeSql('SELECT * FROM users'); console.log('item length', results.rows.length); const temp = []; for (let i = 0; i < results.rows.length; i++) { const element = results.rows.item(i); temp.push(element); console.log('item ', element); } setUsers(temp); } catch (error) { console.log('error in query user', error); } }; useEffect(() => { loadAndQueryDB(); return () => { // closeDatabase(await db); // 컴포넌트 없어질 때 디비 닫기 Error!!! }; }, []); let listViewItemSeparator = () => { return ( ); }; let listItemView = item => { console.log('item in list view', item); return ( Name: {item.name} Age: {item.age} ); }; console.log('users', users); return ( Hello index.toString()} renderItem={({item}) => listItemView(item)} /> ); }; export default App;