TypeError:undefined is not a function ..{near ...db.transacation} in react native-cli using sqlite

时间:2021-04-20 09:07:06

标签: android-sqlite react-native-android

Console Image

这给了我错误,因为我已经尝试了文档中提到的所有方法,我的数据库文件存储在 android/src/main/assets/Users_db.db 中,但仍然出现此错误,并且在任何论坛上都没有找到任何内容。 git 和官方文档中提到的解决方案被遵循但没有结果

我的代码

import React, {Component} from 'react';
import {
  Container,
  Content,
  Header,
  Title,
  Body,
  Text,
  ListItem,
} from 'native-base';
import SQLite from 'react-native-sqlite-storage';
SQLite.DEBUG(true);

SQLite.enablePromise(true);
var database_name = 'Users_db'; // Add your Database name
var database_version = '1.0'; // Add your Database Version
var database_size = 200000; // Add your Database Size
var database_displayname = 'Users_db.db'; // Add your Database Displayname

export default class App extends Component {
  constructor(props) {
    super(props);
    this.state = {usersList: []};
    // SQLite.openDatabase(
    //   {
    //     name: 'Users_db.db',
    //     createFromLocation: '~Users_db.db',
    //     location: 'Library',
    //   },
    var db = SQLite.openDatabase(
      database_name,
      database_version,
      database_displayname,
      database_size,
      this.openCB,
      this.errorCB,
    );
    // this.openCB,
    // this.errorCB,
    db.transaction(tx => {
      tx.executeSql('SELECT * FROM user_table', [], (tx, results) => {
        alert('success');
      });
    });
    // db = SQLite.openDatabase(
    //   {
    //     name: 'Users_db.db',
    //     createFromLocation: 1,
    //   },
    //   this.openCB,
    //   this.errorCB,
    //   this.successToOpenDB,
    //   this.failToOpenDB,
    // );
  }

  successToOpenDB() {
    // db.transaction((tx) => {
    //   tx.executeSql('SELECT * FROM test', [], (tx, results) => {
    //     console.log("Query completed");
    // console.log('success');
  }
  failToOpenDB(err) {
    console.log(err);
  }

  render() {
    return (
      <Container>
        <Header>
          <Body>
            <Title>The Header</Title>
          </Body>
        </Header>
        <Content>
          <ListItem>
            <Text>name hEre</Text>
            <Text>Adress will be here</Text>
          </ListItem>
        </Content>
      </Container>
    );
  }
}

1 个答案:

答案 0 :(得分:0)

我刚刚删除了'SQLite.enablePromise (true);'一切正常。

在我看来,我遵循了错误的文档。