Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic with SQlite插件无法创建表_Sqlite_Ionic Framework_Ionic3_Native_Ionic4 - Fatal编程技术网

Ionic with SQlite插件无法创建表

Ionic with SQlite插件无法创建表,sqlite,ionic-framework,ionic3,native,ionic4,Sqlite,Ionic Framework,Ionic3,Native,Ionic4,我正在使用ionic Sqlite本机插件。尝试创建表时,控制台中出现以下错误: 控制台消息错误:{“行”:{“长度”:0},“行受影响”:0} 我不明白,因为我觉得我的代码没问题 import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { SQLite, SQLiteObject } from "@ionic-native/sqlite"; @

我正在使用ionic Sqlite本机插件。尝试创建表时,控制台中出现以下错误:

控制台消息错误:{“行”:{“长度”:0},“行受影响”:0}

我不明白,因为我觉得我的代码没问题

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { SQLite, SQLiteObject } from "@ionic-native/sqlite";


@Injectable()
export class DatabaseProvider {
theConsole: string = "Console Messages";

options: any = {
name: 'db_name.db',
location: 'default'
}

private db: SQLiteObject;
private isOpen: boolean;

constructor(public http: HttpClient,private sqlite: SQLite) {
console.log('Hello DatabaseProvider Provider');
this.connectToDb();
}

private connectToDb():void {

  this.sqlite = new SQLite();
  this.sqlite.create(this.options)
    .then((db: SQLiteObject) => {
      this.db = db;
      this.isOpen = true;
      console.log('Hello DatabaseProvider connected to db');
      this.createTables();
    })
    .catch(e => {
      this.theConsole += JSON.stringify(e);
      console.log(this.getConsoleMessages());
    });

  }

  private createTables():void{
  this.createTableContatti();
   }

 private createTableContatti(): void{
 var sql = 'create table IF NOT EXISTS contatti(id_contatto INTEGER PRIMARY 
 KEY AUTOINCREMENT,nome TEXT, data_nascita TEXT)';
 this.db.executeSql(sql)
  .then(() => {
  this.theConsole += 'Executed SQL' + sql
  console.log(this.getConsoleMessages());
  })
  .catch(e => {
    this.theConsole += "Error: "  + JSON.stringify(e)
    console.log(this.getConsoleMessages());
  });
  }
有人能帮忙吗?
提前感谢

爱奥尼亚SQLite的executeSql需要两个参数查询和数据。如果没有数据,则传递空数组对象

var sql = 'create table IF NOT EXISTS contatti(id_contatto INTEGER PRIMARY 
 KEY AUTOINCREMENT,nome TEXT, data_nascita TEXT)';
 this.db.executeSql(sql,{})
  .then(() => {
  this.theConsole += 'Executed SQL' + sql
  console.log(this.getConsoleMessages());
  })
  .catch(e => {
    this.theConsole += "Error: "  + JSON.stringify(e)
    console.log(this.getConsoleMessages());
  });

如果传递第二个参数,则查询工作正常。

如果添加第二个参数,则会出现以下编译错误:“类型为“{}”的参数不能分配给类型为“any[]”的参数。类型为“{}”的参数中缺少属性“length”。”原因是我删除了第二个参数。你知道为什么不编译吗?我用第二个参数运行了你的代码,它成功了。你能给我看一下你所做的更改吗?private createTableContatti():void{var sql='如果不存在创建表contatti(id_contatto INTEGER主键自动递增,nome TEXT,data_nascita TEXT)';this.db.executeSql(sql,{})。然后(()=>{this.theConsole+='Executed sql'+sql;console.log(this.getConsoleMessages())catch(error=>{let errMsg=(error.messageText)?error.messageText:error.status;this.theConsole+=“error:”+errMsg+“”+JSON.stringify(error);console.log(this.getConsoleMessages();});}您的查询工作正常。你能试着删除所有额外的代码然后运行吗?只需在回调中记录“success”或“error”。如果这不起作用,请尝试传递空数组[],而不是{}