SQLITE.ALL准备1

问题描述 投票:0回答:1

在我的带有Angular项目的NativeScript中,我正在尝试使用SQLite来创建我的数据库。每当我尝试运行它时,我的qatexswpoi创建表语句就会出现错误。我已经尝试过查找问题,但实际上找不到任何东西。

这是我的SQLITE.ALL - Prepare Error 1文件:

database.service.ts

然后这是我的模型:

leagues.model.ts:

var Sqlite = require("nativescript-sqlite");

@Injectable()
export class DatabaseService {

    private createDB() {
        return new Promise((resolve, reject) => {
            return (new Sqlite("imtracker.db")).then(db => {
            db.execSQL("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, password TEXT, firstName TEXT, lastName TEXT, gender TEXT, permissions TEXT, year INTEGER, basketball NUMERIC, dodgeball NUMERIC, football NUMERIC, soccer NUMERIC, softball NUMERIC, volleyball NUMERIC, teamID INTEGER)").then(id => {
                resolve(db);
            }, error => {
                console.log("CREATE USESRS TABLE ERROR: ", error);
                reject(error);
            });
            db.execSQL("CREATE TABLE IF NOT EXISTS leagues (id INTEGER PRIMARY KEY AUTO INCREMENT, teamSize INTEGER, sportID INTEGER)").then(id => {
                resolve(db);
            }, error => {
                console.log("CREATE LEAGUES TABLE ERROR: ", error);
                reject(error);
            });
        }, error => {
            reject(error);
        })
    })
}

public insertUser(user: User) {
    return new Promise((resolve, reject) => {
        this.createDB().then((res: any) => {
            res.execSQL("INSERT INTO users (id,password,firstName,lastName,gender,permissions,year,basketball,dodgeball,football,soccer,softball,volleyball,teamID) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", [user.id, user.password, user.firstName, user.lastName, user.gender, user.permissions, user.year, user.basketball, user.dodgeball, user.football, user.soccer, user.softball, user.volleyball, user.teamID]).then(id => {
                console.log("INSERT RESULT: ", id);
                resolve(true);
            }, error => {
                console.log("INSERT USERS FAILED: ", error);
                reject(false);
            })
        })
    })
}

public insertLeague(league: Leagues) {
    return new Promise((resolve, reject) => {
        this.createDB().then((res: any) => {
            res.execSQL("INSERT INTO leagues (id,teamSize,sportID) VALUES (?,?,?)", [league.id, league.teamSize, league.sportID]).then(id => {
                console.log("INSERT RESULT: ", id);
                resolve(true);
            }, error => {
                console.log("INSERT LEAGUES FAILED: ", error);
                reject(false);
            })
        })
    })
}

public selectAllUsers() {
    return new Promise((resolve, reject) => {
        this.createDB().then((res: any) => {
            return res.all("SELECT * FROM user").then(rows => {
                let result: User[] = [];
                for (let row in rows) {
                    result.push({
                        "id": rows[row][1],
                        "password": rows[row][2],
                        "firstName": rows[row][3],
                        "lastName": rows[row][4],
                        "gender": rows[row][5],
                        "permissions": rows[row][6],
                        "year": rows[row][7],
                        "basketball": rows[row][8],
                        "dodgeball": rows[row][9],
                        "football": rows[row][10],
                        "soccer": rows[row][11],
                        "softball": rows[row][12],
                        "volleyball": rows[row][13],
                        "teamID": rows[row][14]
                    });
                }
                resolve(result);
            }, error => {
                console.log("SELECT USERS ERROR: ", error);
                reject(error);
            })
        })
    })
}

public selectAllLeagues() {
    return new Promise((resolve, reject) => {
        this.createDB().then((res: any) => {
            return res.all("SELECT * FROM leagues").then(rows => {
                let result: Leagues[] = [];
                for (let row in rows) {
                    result.push({
                        "id": rows[row][1],
                        "teamSize": rows[row][2],
                        "sportID": rows[row][3]
                    });
                }
                resolve(result);
            }, error => {
                console.log("SELECT LEAGUES ERROR: ", error);
                reject(error);
            })
        })
    })
  }
}

user.model.ts:

export interface Leagues {
    id: number,
    teamSize: number,
    sportID: number
}

然后在这里我在我的组件中调用它:

export interface User {
    id: number,
    password: string,
    firstName: string,
    lastName: string,
    gender: string,
    permissions: string,
    year: number,
    basketball: boolean,
    dodgeball: boolean,
    football: boolean,
    soccer: boolean,
    softball: boolean,
    volleyball: boolean,
    teamID: number
}

任何帮助都会非常感激,因为我现在很困惑。谢谢!

angular sqlite nativescript angular2-nativescript
1个回答
0
投票

我怀疑你是否过早地访问了你的选择查询中的表,甚至在它创建之前。你必须将你的constructor(private router: Router, private databaseService: DatabaseService) { this.databaseService.selectAllUsers().then((res: any) => { this.usersList = res; }) } 方法更新为如下所示,

createDB
© www.soinside.com 2019 - 2024. All rights reserved.