Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/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 3 SQLite:SQLiteObject';s方法executeSql()不工作_Sqlite_Cordova_Ionic Framework_Ionic Storage - Fatal编程技术网

Ionic 3 SQLite:SQLiteObject';s方法executeSql()不工作

Ionic 3 SQLite:SQLiteObject';s方法executeSql()不工作,sqlite,cordova,ionic-framework,ionic-storage,Sqlite,Cordova,Ionic Framework,Ionic Storage,我所做的: 今天通过命令npm install-g爱奥尼亚安装了爱奥尼亚,并对cordova集成说“y” 已安装的cordova:npm安装-g cordova 创建了一个新项目:ionic start sqlite3demo blank 已安装的离子本机存储: 爱奥尼亚cordova插件添加cordova sqlite存储 npm安装--save@ionic native/sqlite 现在是代码。我将SQLite导入app.module.ts如下: <ion-header>

我所做的:

  • 今天通过命令npm install-g爱奥尼亚安装了爱奥尼亚,并对cordova集成说“y”
  • 已安装的cordova:
    npm安装-g cordova
  • 创建了一个新项目:
    ionic start sqlite3demo blank
  • 已安装的离子本机存储:

    爱奥尼亚cordova插件添加cordova sqlite存储

    npm安装--save@ionic native/sqlite

  • 现在是代码。我将
    SQLite
    导入
    app.module.ts
    如下:

    <ion-header>
      <ion-navbar>
        <ion-title>
          SQLite demo
        </ion-title>
      </ion-navbar>
    </ion-header>
    
    <ion-content padding>
      <ion-content>
    
        <button ion-button (click)="createTables()">Create db</button>
        <p>Result: {{ message }}</p>
    
      </ion-content>
    </ion-content>
    
    从'@angular/platform browser'导入{BrowserModule};
    从'@angular/core'导入{ErrorHandler,NgModule};
    从“离子角度”导入{IonicApp,IonicErrorHandler,IonicModule};
    从'@ionic native/SplashScreen'导入{SplashScreen};
    从'@ionic native/status bar'导入{StatusBar};
    从'@ionic native/SQLite'导入{SQLite};
    从“./app.component”导入{MyApp};
    从“../pages/home/home”导入{HomePage};
    @NGD模块({
    声明:[
    MyApp,
    主页
    ],
    进口:[
    浏览器模块,
    IonicModule.forRoot(MyApp)
    ],
    引导:[IonicApp],
    入口组件:[
    MyApp,
    主页
    ],
    供应商:[
    状态栏,
    飞溅屏幕,
    {提供:ErrorHandler,useClass:IonicerHandler},
    数据库
    ]
    })
    导出类AppModule{}
    
    然后,我修改了默认主页,如下所示:

    <ion-header>
      <ion-navbar>
        <ion-title>
          SQLite demo
        </ion-title>
      </ion-navbar>
    </ion-header>
    
    <ion-content padding>
      <ion-content>
    
        <button ion-button (click)="createTables()">Create db</button>
        <p>Result: {{ message }}</p>
    
      </ion-content>
    </ion-content>
    
    在所有这些之后,我执行
    ionic cordova run android
    ,我可以从
    db
    中看到JSON,但在那之后,我单击按钮创建一个表,而不是看到“OK”,而是从错误中看到JSON

    我做错了什么?为什么不起作用

    编辑:我使用的版本是:

    "@ionic-native/sqlite": "^4.12.2",
    "cordova-sqlite-storage": "^2.4.0"
    

    请注意,如果表已经存在,
    CREATE TABLE
    将抛出异常。
    CREATE TABLE IF NOT EXISTS
    query将创建不存在的表,否则将通过抛出异常忽略该命令

    如果您想创建一个表,则需要在
    创建表(如果不存在)之前使用
    删除表(如果存在)
    ,删除现有表。请注意,
    创建表
    将在表已经存在时引发异常。
    CREATE TABLE IF NOT EXISTS
    query将创建不存在的表,否则将通过抛出异常忽略该命令

    如果您想创建一个表,那么您需要在
    创建表(如果不存在)之前使用
    删除表(如果存在)
    ,删除现有表。最后,如前所述,文档已过时。
    executeSql()
    的工作方式是将
    []
    作为第二个参数传递。看来,离子本机团队不考虑更新他们的文档太多。还有其他一些插件也有过时的文档,比如
    email composer
    ,这使得开发人员在已经有解决方案的东西上浪费了很多时间。

    最后,正如前面所描述的,文档已经过时了。
    executeSql()
    的工作方式是将
    []
    作为第二个参数传递。看来,离子本机团队不考虑更新他们的文档太多。还有其他一些带有过时文档的插件,比如
    email composer
    ,这使得开发人员在已经有解决方案的东西上浪费了很多时间。

    这毫无意义。在我之前阅读的所有示例中,人们使用
    创建不存在的表
    ,而不使用指令
    删除存在的表
    (顺便说一句,它是
    删除表
    )。我已经在这方面投入了几个小时,我开始认为SQLite插件只是一个简单的bug,至少是它的最新版本。我现在使用的版本不需要在方法调用的末尾有一个空对象
    {}
    ,不像我读过的所有例子,这没有任何意义。在我之前阅读的所有示例中,人们使用
    创建不存在的表
    ,而不使用指令
    删除存在的表
    (顺便说一句,它是
    删除表
    )。我已经在这方面投入了几个小时,我开始认为SQLite插件只是一个简单的bug,至少是它的最新版本。我现在使用的版本不需要在方法调用结束时使用空对象
    {}
    ,这与我目前阅读的所有示例不同。