Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung von Beispielen für die Verwendung der SQLite-Datenbank in React Native

Detaillierte Erläuterung von Beispielen für die Verwendung der SQLite-Datenbank in React Native

零下一度
零下一度Original
2017-06-24 14:35:133296Durchsuche
Mit SQLite erstellte Projekte können in anderen Umgebungen erstellt werden. Beispielsweise können sich mit Expo erstellte Projekte von dieser unterscheiden! Aber die konkreten Ideen sind die gleichen. Ich hoffe, dieser Artikel kann allen helfen!

1. Installation

Die Befehlszeile gibt das Stammverzeichnis des ReactNative-Projekts ein und führt

npm install React-native-sqlite-storage --save

aus

2. Nehmen Sie globale Gradle-Einstellungen vor
Bearbeiten Sie die Datei android/settings.gradle und fügen Sie die hinzu folgender Inhalt
include ':react-native-sqlite-storage'
project(':react-native-sqlite-storage').projectDir = new File(rootProject.projectDir , '../ node_modules/react-native-sqlite-storage/src/android')
3. Ändern Sie die Datei android/app/build.gradle

In Abhängigkeiten Kompilierungsprojekt hinzufügen(':react-native-sqlite-storage')


4. Bearbeiten Sie die Hauptanwendung .Java-Datei, Registrieren Sie das SQLite-Modul in MainActivitiy.java

import org.pgsqlite.SQLitePluginPackage;

[java]Klartext anzeigen
  1. @ Override

  2. protected List getPackages() {

  3. return Arrays.< ;ReactPackage>asList(

  4.                                       new SQLitePluginPackage() , >

  5. Neues BaidumAppackage (getApplicationContext ())

  6. ); 🎜>
  7. Der Screenshot sieht wie folgt aus:

5 🎜>
Um die Datei sqlite.js zu schreiben und die Komponente einzuführen, importieren Sie SQLiteStorage aus „react-native-sqlite-storage“;
Achten Sie darauf jede

Druckausnahme, sonst sehen Sie möglicherweise nicht, was schief gelaufen ist

[Javascript]Klartext anzeigen

  1. import React,{Component} from 'react'; import{

  2. ToastAndroid,

    } from
  3. 'react-native'; >
  4. import SQLiteStorage from
  5. 'react-native-sqlite-storage';
  6. SQLiteStorage.DEBUG(
  7. true);

    var Database_name =
  8. "test.db";
  9. //Datenbankdatei

  10. var Database_version = "1.0";//Versionsnummer

  11. var Database_displayname = "MySQLite";

  12. var Database_size = -1;

    //-1 Es sollte unbegrenzten

  13. var db

    exportieren
  14. bedeuten default
  15. class SQLite

    extends Component{ if(db){

  16. this._successCB('close '); db.close();

  17. }
  18. else {

  19. console. log("SQLiteStorage not open"); open(){

  20. db = SQLiteStorage.openDatabase( Datenbankname,

  21. Datenbankversion,

  22. Datenbankanzeigename,

  23. Datenbankgröße,
  24. () =>{

  25.                                                                                                                                               🎜>

  26. (err)=>{
  27. });
  28. return db; {

  29. if (!db) {

  30.      
  31. this.open();                                                                              🎜>
  32. db.transaction((tx)=> {
  33. tx.executeSql(
  34. 'CREATE TABLE IF NOT EXISTS USER(' +
  35.   'id INTEGER PRIMARY KEY AUTOINCREMENT,' + 

  36.    
  37. ' name varchar, '+
  38.                                           

  39.   'phone VARCHAR,' + 

  40.                           >                                                                          🎜> this._successCB(

    'executeSql');
  41. }, (err)=> ._errorCB(
  42. 'executeSql', err);
  43. }, (err )=> {//Alle Transaktionen sollten Fehlerrückrufmethoden haben und Ausnahmeinformationen in der Methode ausgeben, sonst wissen Sie möglicherweise nicht, was schief gelaufen ist.

  44. this._errorCB(

    'transaction', err);

  45. }, ()=> {

  46. }) 

  47.                                       

  48. this.open();

    }

  49. db.transaction((tx )=>{

  50. tx.executeSql('delete from user',[],()=> ;{

  51. });
  52. }
  53. dropTable(){
  54. db.transaction((tx)=>{

  55. tx.executeSql(

    'drop table user',[],()=> ;{

  56. });

  57. },(err)= >{ ._errorCB(

    'transaction', err);

  58. },()=>{ > 

    this._successCB(
  59. 'transaction'); 
  60.  });

  61. insertUserData(userData){

  62. let len ​​​​= userData.length;

  63. if (!db) {
  64. this.open();
  65. }
  66. this.createTable(); 🎜>

  67. this.deleteData(); > db.transaction((tx)=>{

  68.  
  69. var user = userData[i];

    let name= user.name; >

  70. let age = user.age;

  71. let sex = user.sex;
  72.         let phone = user.phone;  

  73.         let email = user.email;  

  74.         let qq = user.qq;  

  75.         let sql = "INSERT INTO user(name,age,sex,phone,email,qq)"+  

  76.         "values(?,?,?,?,?,?)";  

  77.         tx.executeSql(sql,[name,age,sex,phone,email,qq],()=>{  

  78.           },(err)=>{  

  79.             console.log(err);  

  80.           }  

  81.         );  

  82.       }  

  83.     },(error)=>{  

  84.       dies ._errorCB('transaction', error);  

  85.       ToastAndroid.show("数据插入失败",ToastAndroid.SHORT);  

  86.     },()=>{  

  87.       this._successCB('transaction insert data' );  

  88.       ToastAndroid.show("成功插入 "+len+" 条用户数据",ToastAndroid.SHORT);  

  89.     });  

  90.   }  

  91.   close(){  

  92.       if(db){  

  93.           this._successCB('close');  

  94.           db.close();  

  95.       }else {  

  96.           console.log("SQLiteStorage not open");  

  97.       }  

  98.       db = null;  

  99.   }  

  100.   _successCB(name){  

  101.     console.log("SQLiteStorage "+name+" success");  

  102.   }  

  103.   _errorCB(name, err){  

  104. console.log("SQLiteStorage "+name);  

  105.     console.log(err);  

  106.   }  

  107.     render(){  

  108.         return null;  

  109.     }  

  110. };  

'reagieren';  

  • importieren {  

  •   AppRegistry,  

  •   Text,  

  •   Ansicht,  

  •   Navigator,  

  •   StyleSheet,  

  • } von 'react-native';  

  • SQLite aus './sqlite' importieren;  

  • var sqLite = new SQLite();  

  • var db;  

  • class App extends Component{  

  •     compennetDidUnmount(){  

  •     sqLite.close();  

  •   }  

  •   componentWillMount(){  

  •     //开启数据库  

  •     if(!db){  

  •       db = sqLite.open();  

  •     }  

  •     //建表  

  •     sqLite.createTable ();  

  •     //删除数据  

  •     sqLite.deleteData();  

  •     //模拟一条数据  

  •     var userData = [];  

  •     var user = {};  

  •     user.name = "张三";  

  •     user.age = "28";  

  •     user.sex = "男";  

  •     user.phone = "18900001111";  

  •     user.email = "2343242@qq.com";  

  •     user.qq = "111222";  

  •     userData.push(user);  

  •     //插入数据  

  •     sqLite.insertUserData(userData);  

  •     //查询  

  •     db.transaction((tx)=>{  

  •       tx.executeSql("select * from user", [],(tx,results)=>{  

  •          var len = results.rows.length;  

  •         for(let i=0; i

  •           var u = results.rows.item(i);  

  •           //一般在数据查出来之后,  可能要setState操作,重新渲染页面  

  •           alert("姓名:"+u.name+",年龄:"+u.age+" ,电话:"+u.phone);  

  •         }  

  •       });  

  •     },(error)=>{//打印异常信息  

  •       console.log(error);  

  •     });  

  •   }  

  •     render(){  

  •         return null;  

  •     }  

 

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für die Verwendung der SQLite-Datenbank in React Native. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn