реакция-нативный-sqlite-хранилище - нет такой таблицы - PullRequest
0 голосов
/ 21 мая 2018

Кто-нибудь знает лучший способ подключить реактивное-нативное-хранилище?Мой отладчик получает «нет такой таблицы: nameOfTable (code 1)» после запроса.

Я должен получить «id», «name» и «фамилия» из таблицы с именем «person».Я подключил свою предварительно заполненную базу данных ("mioDB"), расположенную в "/android/app/src/main/assets/mioDB.db".

Это мой маленький код:

import React,{Component} from 'react';
import {TextInput,View,Text,TouchableOpacity} from 'react-native';
import { openDatabase } from "react-native-sqlite-storage";

let mioDB = openDatabase('mioDB');

class App extends Component{
  constructor(props){
    super(props);
    this.state={
      name:'',
      lastName:''
    };
  }

  showData=()=>{
    alert('name: '+this.state.name+' lastName: '+this.state.lastName);
  };

  listOfNames=()=>{
    try{
      mioDB.transaction((statement)=>{
        console.log('****************');
        statement.executeSql('SELECT * FROM person',[],(statement,results)=>{
          console.log('****************');
          var len = results.rows.length;
            for (let i = 0; i < len; i++) {
              let row = results.rows.item(i);
              console.log(`Record: ${row.name}`);
            }
        });
      });
    }catch(error){
      alert(error);
    }    
  };    

  render(){    
    return(
      <View style={{marginTop:100}}>
        <TextInput style={{fontSize:20}} placeholder='name' onChangeText={(text)=>this.setState({name:text})}/>
        <TextInput style={{fontSize:20}} placeholder='lastName' onChangeText={(text)=>this.setState({lastName:text})}/>
        <TouchableOpacity style={{width:150,height:50}} onPress={this.showData}><Text>Create db</Text></TouchableOpacity>
        <TouchableOpacity style={{width:150,height:50}} onPress={this.listOfNames}><Text>Show database</Text></TouchableOpacity>
      </View>
    );
  }
}
export default App;

от отладчика

Я не знаю, где это неправильно, потому что система легко подключается

1 Ответ

0 голосов
/ 23 мая 2018

В соответствии с документом (act-native-sqlite-storage ) предварительно заполненный файл должен находиться в каталоге www, но общий путь не находится в каталоге www,Также для предварительно заполненной БД openDatabase принимает объект вида

{name : "testDB", createFromLocation : "~data/mioDB.db"}

Здесь data - это подкаталог каталога www.

Пожалуйста, внесите эти два изменения и попробуйте.

...