0
0
React Nativemobile~20 mins

SQLite with expo-sqlite in React Native - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
SQLite Master with expo-sqlite
Get all challenges correct to earn this badge!
Test your skills under time pressure!
ui_behavior
intermediate
2:00remaining
What is the output after inserting and querying a record?
Consider this React Native code using expo-sqlite. What will be the value of result.rows.length after the transaction?
React Native
import * as SQLite from 'expo-sqlite';
const db = SQLite.openDatabase('test.db');

// Create table and insert one record

db.transaction(tx => {
  tx.executeSql('CREATE TABLE IF NOT EXISTS items (id INTEGER PRIMARY KEY NOT NULL, name TEXT);');
  tx.executeSql('INSERT INTO items (name) VALUES (?);', ['apple']);
  tx.executeSql('SELECT * FROM items;', [], (_, result) => {
    console.log(result.rows.length);
  });
});
AThrows an error
B1
Cundefined
D0
Attempts:
2 left
💡 Hint
Remember that the SELECT query runs after the INSERT in the same transaction.
lifecycle
intermediate
2:00remaining
When is the best time to open the SQLite database in a React Native app?
In a React Native app using expo-sqlite, when should you open the database connection to ensure it is ready for queries?
AInside a useEffect hook with an empty dependency array
BInside the component's render function
COnce, outside any component, at module load time
DEvery time a button is pressed
Attempts:
2 left
💡 Hint
Opening the database multiple times can cause issues and is unnecessary.
📝 Syntax
advanced
2:00remaining
What error does this code produce?
What error will this code cause when running a transaction with expo-sqlite?
React Native
db.transaction(tx => {
  tx.executeSql('INSERT INTO items (name) VALUES (?);', ['banana'],
    () => console.log('Insert success'),
    () => { console.log('Insert failure'); return false; }
  );
});
ANo error, logs 'Insert success' on success
BTypeError because the failure callback returns undefined instead of false
CSyntaxError due to missing parameters
DRuntime error because the failure callback does not return true
Attempts:
2 left
💡 Hint
The failure callback must return false to signal error handled.
navigation
advanced
2:00remaining
How to ensure data is loaded before navigating?
You want to load data from SQLite before navigating to a new screen. Which approach ensures data is ready before navigation?
ACall navigation.navigate inside the executeSql success callback
BCall navigation.navigate immediately after starting the transaction
CCall navigation.navigate inside a setTimeout with 1 second delay
DCall navigation.navigate in a useEffect without dependencies
Attempts:
2 left
💡 Hint
SQLite queries are asynchronous; navigation must wait for completion.
🧠 Conceptual
expert
2:00remaining
Why use transactions in expo-sqlite?
Which is the main reason to use db.transaction when working with expo-sqlite?
ATo encrypt the database contents for security
BTo speed up queries by running them in parallel
CTo automatically cache query results for offline use
DTo execute multiple SQL statements atomically and rollback on failure
Attempts:
2 left
💡 Hint
Think about what happens if one statement fails inside a transaction.