搜索

首页  >  问答  >  正文

android - React Native读取本地SQLite路径配置

import React from 'react';
import SQLiteStorage from 'react-native-sqlite-storage';

SQLiteStorage.DEBUG(true);
var database_name = "promo.db";
var database_version = "1.0";
var database_displayname = "MySQLite";
var database_size = -1;
var db;
const Product_TABLE_NAME = "Product";//收藏表

const SQLite = React.createClass({

    render(){
        return null;
    },
    componentWillUnmount(){
        if(db){
            this._successCB('close');
            db.close();
        }else {
            console.log("SQLiteStorage not open");
        }
    },
    open(){
        db = SQLiteStorage.openDatabase(
            database_name,
            database_version,
            database_displayname,
            database_size,
            ()=>{
                this._successCB('open');
            },
            (err)=>{
                this._errorCB('open',err);
            });
    },
    createTable(){
        if (!db) {
            open();
        }
        //创建表
        db.transaction((tx)=> {
            tx.executeSql('CREATE TABLE IF NOT EXISTS ' + Product_TABLE_NAME + '(' +
                'id INTEGER PRIMARY KEY NOT NULL,' +
                'name VARCHAR,' +
                'jan VARCHAR,' +
                'price VARCHAR,' +
                'img VARCHAR,' +
                'url VARCHAR,' +
                'title VARCHAR'
                + ');'
                , [], ()=> {
                    this._successCB('executeSql');
                }, (err)=> {
                    this._errorCB('executeSql', err);
                });
        }, (err)=> {
            this._errorCB('transaction', err);
        }, ()=> {
            this._successCB('transaction');
        })
    },
    close(){
        if(db){
            this._successCB('close');
            db.close();
        }else {
            console.log("SQLiteStorage not open");
        }
        db = null;
    },
    _successCB(name){
        console.log("SQLiteStorage "+name+" success");
    },
    _errorCB(name, err){
        console.log("SQLiteStorage "+name+" error:"+err);
    }
});

module.exports = SQLite;

请问怎样在哪配置数据库的路径,能读取到移动端本地的sqlite.db ,不用每次都创建新的?

大家讲道理大家讲道理2774 天前906

全部回复(1)我来回复

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:30:47

    没人回答自己回答了~
    在外部组件react-native-sqlite-storage 中,源码支持读写SD卡 ,所以直接写路径就ok

    import React,{Component} from 'react';
    import{
        ToastAndroid,
    } from 'react-native';
    import SQLiteStorage from 'react-native-sqlite-storage';
    SQLiteStorage.DEBUG(true);
    var database_name = "/sdcard/TabletPromo/Promo.db";//数据库文件
    var database_version = "1.0";//版本号  
    var database_displayname = "MySQLite";
    var database_size = -1;//-1应该是表示无限制  
    var db;
    class SQLite extends Component {
        componentWillUnmount(){
            if(db){
                this._successCB('close');
                db.close();
            }else {
                console.log("SQLiteStorage not open");
            }
        }
        open(){
            db = SQLiteStorage.openDatabase(
                database_name,
                database_version,
                database_displayname,
                database_size,
                ()=>{
                    this._successCB('open');
                },
                (err)=>{
                    this._errorCB('open',err);
                });
            return db;
        }
        close(){
            if(db){
                this._successCB('close');
                db.close();
            }else {
                console.log("SQLiteStorage not open");
            }
            db = null;
        }
        _successCB(name){
            console.log("SQLiteStorage "+name+" success");
        }
        _errorCB(name, err){
            console.log("SQLiteStorage "+name);
            console.log(err);
        }
        render(){
            return null;
        }
    };
    
    export default SQLite;
    

    文件在移动端的位置如图:

    继续研究怎样动态读取数据,欢迎讨论

    回复
    0
  • 取消回复