- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在制作一个 Android 应用程序,现在我正在尝试将这个新的“listingStatus”列添加到我的数据库中,我将列名称添加到我的 onCreate() 函数中,但我仍然不断收到这是我的 logCat。有什么想法如何解决这个问题吗?我尝试删除数据库并重新创建它,但我不断收到相同的错误。
package com.example.shareandcare;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class listingHelper extends SQLiteOpenHelper {
public listingHelper(Context context) {
super(context, "listing.db", null, 2);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table listing(_id integer primary key autoincrement, listingTitle text, listingTag text, listingDescription text, listingDimensionX float, listingDimensionY float, listingDimensionZ float, listingImage text, listingStatus text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
db.execSQL("drop table if exists listing");
onCreate(db);
}
public Cursor getAll() {
return (getReadableDatabase().rawQuery("select _id, listingTitle, listingTag, listingDescription, listingDimensionX, listingDimensionY, listingDimensionZ, listingImage from listing order by listingTag", null));
}
public Cursor getAllConfirmed() {
String arg = "1";
String[] args = {arg};
return (getReadableDatabase().rawQuery("select _id, listingTitle, listingTag, listingDescription, listingDimensionX, listingDimensionY, listingDimensionZ, listingImage from listing where listingStatus=?", args));
}
public Cursor getById(String id) {
String[] args = {id};
return (getReadableDatabase().rawQuery("select _id, listingTitle, listingTag, listingDescription, lisitngDimensionX, listingDimensionY, listingDimensionZ, listingImage from listing where _id=?", args));
}
public Cursor getByTitle(String title) {
String[] args = {title};
return (getReadableDatabase().rawQuery("select _id, listingTitle, listingTag, listingDescription, listingDimensionX, listingDimensionY, listingDimensionZ, listingImage from listing where listingTitle =?", args));
}
public Cursor getByTag(String tag) {
tag = tag.toLowerCase();
String[] args = {tag};
return (getReadableDatabase().rawQuery("select _id, listingTitle, listingTag, listingDescription, listingDimensionX, listingDimensionY, lisitngDimensionZ, listingImage from listing where listingTag =?", args));
}
public void updateListingStatus(String title) {
ContentValues cv = new ContentValues();
String[] args ={title};
cv.put("listingStatus", "1");
getWritableDatabase().update("listing", cv, "title=?", args);
}
public void addListing(String listingTitle, String listingTag, String listingDescription, String listingDimensionX, String listingDimensionY, String listingDimensionZ, String listingImage) {
ContentValues cv = new ContentValues();
cv.put("listingTitle", listingTitle);
cv.put("listingTag", listingTag.toLowerCase());
cv.put("listingDescription", listingDescription);
cv.put("listingDimensionX", listingDimensionX);
cv.put("listingDimensionY", listingDimensionY);
cv.put("listingDimensionZ", listingDimensionZ);
cv.put("listingImage", listingImage);
getWritableDatabase().insert("listing", "listingTitle", cv);
}
public void delete(String id) {
String[] args = {id};
getWritableDatabase().delete("listing","_id=?", args);
}
public void resetDatabase() {
getWritableDatabase().execSQL("drop table if exists listing");
}
}
这是我的 logCat。
--------- beginning of crash
2020-02-10 00:24:06.786 12602-12602/com.example.shareandcare E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.shareandcare, PID: 12602
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.shareandcare/com.example.shareandcare.admin}: android.database.sqlite.SQLiteException: no such column: listingStatus (code 1 SQLITE_ERROR): , while compiling: select _id, listingTitle, listingTag, listingDescription, listingDimensionX, listingDimensionY, listingDimensionZ, listingImage from listing where listingStatus=1
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: android.database.sqlite.SQLiteException: no such column: listingStatus (code 1 SQLITE_ERROR): , while compiling: select _id, listingTitle, listingTag, listingDescription, listingDimensionX, listingDimensionY, listingDimensionZ, listingImage from listing where listingStatus=1
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:986)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:593)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:590)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:61)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:46)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1443)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1382)
at com.example.shareandcare.listingHelper.getAllConfirmed(listingHelper.java:31)
at com.example.shareandcare.admin.onCreate(admin.java:33)
at android.app.Activity.performCreate(Activity.java:7825)
at android.app.Activity.performCreate(Activity.java:7814)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
2020-02-10 00:24:06.814 12602-12602/com.example.shareandcare I/Process: Sending signal. PID: 12602 SIG: 9
最佳答案
您用于创建和删除表的 SQL 代码看起来有效。 logcat-log 中有一行:“no such column”,这意味着您的“getAllConfirmed”已执行,但您的迁移不起作用,因此请注意这一点:
一般来说,如果您想添加列,最好只更改表并添加列。但我想您刚刚开始开发您的应用程序,您希望让事情变得更简单,因此只要您尚未发布您的应用程序,您的方法就有效。
如果您刚刚开始,我只是想让您知道,Android 引入了一种新的数据库创建方式,这种方式更加常见和简单:
https://developer.android.com/training/data-storage/room
这并不能解决您的问题,但如果您能够升级,这将简化项目的数据库创建
关于java - 当我尝试加载数据库时应用程序不断崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60138802/
说真的,你怎么能在不发疯的情况下处理所有这些异常呢?我是不是读了太多关于异常处理的文章或什么?我尝试重构了几次,但每次似乎都以更糟糕的结果告终。也许我应该承认确实会发生异常(exception)情况,
背景 两者 try/rescue和 try/catch是 Elixir 中的错误处理技术。根据 corresponding chapter在介绍指南中。 Errors can be rescued u
每当我尝试在 Raspberry PI 上运行此 python 脚本时,我都会遇到问题: import socket import sys # Create a TCP/IP socket sock
我想知道一些关于 PHP 的 try , catch声明。 让我们考虑以下示例。 abstract class ExceptionA extends Exception {} class Except
我的 laravel v5.4 项目中有两个模型,user 和 admin。 在 config/auth.php 中,我向守卫和提供者添加了管理员,如下所示: 'guards' => [ 'w
try: r = requests.get(url, params={'s': thing}) except requests.ConnectionError, e: print e
我有以下代码。 但是,它并不能捕获所有错误,而我仍然会收到“throw er;//未处理的'错误'事件”。 为什么是这样? app.post('/api/properties/zip/:zip/bed
问题与细节 我正在使用自定义错误处理,遇到的错误之一是“路径中的非法字符”。我有一个自定义函数,旨在通过路径字符串查找此类非法字符,并在找到它们时引发自定义错误。但是我发现,取决于非法字符,Test-
This question already has answers here: How do I catch a numpy warning like it's an exception (not j
我正在使用其他人的代码,但我不熟悉try/catch,因此我举了一个类似的小例子。在第11行上,如果我写了error(''),似乎没有发现错误并增加了索引j。但是,编写error(' ')或error
我在我的一个程序中遇到了这个问题,在这种情况下,尝试/异常(exception)的错误使程序变得更好,以防用户意外输入了他们不应该输入的内容。它仍然给我错误,我为为什么感到困惑。如果对我的问题确实很重
我在尝试TRY ... CATCH块时遇到问题。有人可以解释为什么以下代码无法执行我的sp吗? DECLARE @Result int SET @Result = 0 BEGIN TRY SE
我有一个相当大的 powershell 脚本,其中包含许多(20 多个)执行各种操作的函数。 现在所有代码实际上都没有任何错误处理或重试功能。如果某个特定的任务/功能失败,它就会失败并继续。 我想改进
为什么我尝试时需要导入 inputmismatchException catch(InputMismatchException e){ System.out.println("
我对此感到困惑 - 我为辅助方法编写了一个 try/catch 。它的目的是捕获任何无效输入(任何不是“男性”或“女性”的内容(没有特定情况)。如果输入无效,它将通知用户,然后让他们重试。如果有效,则
我有时会发现自己处于如下场景。尽可能简单地陈述问题 “有时我会创建一段代码,Java 让我将其包含在 try/catch 语句中。我没有使用 catch,所以我将其留空。为什么这是错误的?” boo
我有点困惑为什么当我不使用 Try block 时会出现 Try block 错误。 我在代码块底部附近收到错误通知。如果我不使用 try/catch,有人可以向我解释为什么会发生这种情况吗? 它是否
我已经盯着我的电脑两个小时了,我不知道我做错了什么。谁能帮助我看到光明? package blackjack; import java.util.Random; import java.util.Sc
我想将方法保存在 Enum 中,但 Class.getDeclaredMethod 抛出 NoSuchMethodException,那么我该如何处理呢?我的代码: public enum Car
这个问题已经有答案了: Executing multi-line statements in the one-line command-line (18 个回答) 已关闭 3 年前。 如何使用try.
我是一名优秀的程序员,十分优秀!