Maison  >  Article  >  interface Web  >  Explication détaillée d'exemples d'utilisation de la base de données SQLite dans React Native

Explication détaillée d'exemples d'utilisation de la base de données SQLite dans React Native

零下一度
零下一度original
2017-06-24 14:35:133311parcourir
Les projets créés avec Sqllite peuvent être créés dans différents environnements. Par exemple, les projets créés avec Expo peuvent être différents de celui-ci ! Mais les idées spécifiques sont les mêmes. J’espère que cet article pourra aider tout le monde !

1.Installation

La ligne de commande entre dans le répertoire racine du projet ReactNative et exécute

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

2. Définissez les paramètres Gradle globaux
Modifiez le fichier android/settings.gradle et ajoutez le contenu suivant
include ':react-native-sqlite-storage'
project(':react-native-sqlite-storage').projectDir = new File(rootProject.projectDir , '../ node_modules/react-native-sqlite-storage/src/android')
3. Modifier le fichier android/app/build.gradle

Dans les dépendances, ajoutez un projet de compilation(':react-native-sqlite-storage')


4. Fichier .Java, Enregistrez le module sqlite dans MainActivitiy.java

import org.pgsqlite.SQLitePluginPackage;

[java] afficher la copie brute
  1. @ Remplacer

  2. liste protégée getPackages() {

  3. return Arrays.< ;ReactPackage>asList(

  4.                                         new SQLitePluginPackage() ,

    >

  5. Nouveau BaidumAppackage (getApplicationContext ())
  6. 🎜>
  7. La capture d'écran est la suivante :

Utiliser
pour écrire le fichier sqlite.js et introduire le composant import SQLiteStorage from 'react-native- sqlite-storage';
Faites attention à chaque

exception d'impression, sinon vous ne verrez peut-être pas ce qui n'a pas fonctionné

[javascript] afficher la copie simple

  1. importer React, {Component} depuis 'react';

  2. importer{

  3. ToastAndroid,

  4. } depuis 'react-native' ;

  5. importer SQLiteStorage depuis 'react-native-sqlite-storage';

  6. SQLiteStorage.DEBUG(true);

  7. var nom_base de données = "test.db";//Fichier de base de données

  8. var database_version = "1.0";//Numéro de version

  9. var database_displayname = "MySQLite"

  10. var database_size = -1;//-1 Cela devrait signifier

  11. var db

  12. exportation par défaut class SQLite étend le composant{ 

  13.  componentWillUnmount(){

  14. if(db) {
  15. this._successCB(
  16. 'close');

    db.close(); 🎜> }

    else {
  17. console (
  18. "SQLiteStorage non ouvert"); 🎜>

    } open(){

  19. db = SQLiteStorage.openDatabase(

  20. nom_base de données,
  21. version_base de données,
  22. nom_display_base de données,
  23. taille_base de données,
  24. () =>{
  25.                                                                                                                                                    🎜>
  26. (err)=>{

  27. });

  28. return db; 🎜>
  29. createTable(){

    if (!db) {
  30.      
  31. this.open();                                                                              🎜>

  32. db.transaction((tx)=> {
  33. tx.executeSql('CRÉER UNE TABLE SI N'EXISTE PAS UTILISATEUR(' +

  34.   

    'id INTEGER PRIMARY KEY AUTOINCREMENT,' + 
  35.    

    ' nom varchar, '+
  36.                                             
  37.  'téléphone VARCHAR' + 

  38.  'e-mail VARCHAR' + 

  39.                                                                                            🎜> ce. _successCB('executeSql');

  40. }, (err)=> {
  41.  this._errorCB('executeSql', euh

  42. }) ;
  43. }, (err)=> {//Toutes les transactions doivent avoir des méthodes de rappel d'erreur et imprimer des informations d'exception dans la méthode, sinon vous ne saurez peut-être pas ce qui n'a pas fonctionné .

  44. this._errorCB(
  45. 'transaction', euh);
  46. }, ()=> {
  47. }) 

  48.                                                    (!db) {

  49. this.open();

  50. }
  51. db.transaction((tx )=>{
  52. tx.executeSql(
  53. 'supprimer de l'utilisateur',[],()=> ;{

  54. });
  55. }

  56. dropTable(){

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

  58. tx.executeSql(

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

  59. });

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

    'transaction', err);

  61. },()=>{ > 
  62. this._successCB(

    'transaction'); 

  63.  });
  64. insertUserData(userData){

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

  66. if (!db) {
  67. this.open();

    }

  68. this.createTable(); 🎜>
  69. this.deleteData();> db.transaction((tx)=>{

  70.  

    var user = userData[i];
  71. let name= user.name
  72. laissez age = utilisateur.age
  73. laissez sexe = utilisateur.sex;

  74.         let phone = user.phone;  

  75.         let email = user.email;  

  76.         let qq = user.qq;  

  77.         let sql = "INSÉRER INTO utilisateur (nom, âge, sexe, téléphone, e-mail, qq)"+  

  78.         "valeurs(?,?,?,?,?,?)";  

  79.         tx.executeSql(sql,[nom,âge,sexe,téléphone,e-mail,qq],()=>{  

  80.           },(err)=>{  

  81.             console.log(err);  

  82.           }  

  83.         );  

  84.       }  

  85.     },(erreur)=>{  

  86.       ce ._errorCB('transaction', erreur);  

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

  88.     },()=>{  

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

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

  91.     });  

  92.   }  

  93.   close(){  

  94.       if(db){  

  95.           this._successCB('close');  

  96.           db.close();  

  97.       }else {  

  98.           console.log("SQLiteStorage pas ouvert");  

  99.       }  

  100.       db = null ;  

  101.   }  

  102.   _successCB(name){  

  103.     console.log("SQLiteStorage "+nom+" succès");  

  104.   }  

  105.   _errorCB(nom, erreur){  

  106. console.log("SQLiteStorage "+nom);  

  107.     console.log(err);  

  108.   }  

  109.     render(){  

  110.         return null;  

  111.     }  

  112. } ;  

'réagir';  

  • importer {  

  •   AppRegistry,  

  •   Texte,  

  •   Affichage,  

  •   Navigateur,  

  •   StyleSheet,  

  • } de 'react-native' ;  

  • importer SQLite depuis './sqlite' ;  

  • var sqLite = new SQLite();  

  • var db;  

  • class App étend 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(utilisateur);  

  •     //插入数据  

  •     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);  

  •         }  

  •       });  

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

  •       console.log(erreur);  

  •     });  

  •   }  

  •     render(){  

  •         return null;  

  •     }  

 

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn