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安装-g cordova
ionic start sqlite3demo blank
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,至少是它的最新版本。我现在使用的版本不需要在方法调用结束时使用空对象{}
,这与我目前阅读的所有示例不同。