android.database.sqlite.SQLiteException:没有这样的表:table_name
Posted
技术标签:
【中文标题】android.database.sqlite.SQLiteException:没有这样的表:table_name【英文标题】:android.database.sqlite.SQLiteException: no such table: table_name 【发布时间】:2021-05-14 19:09:51 【问题描述】:对于同样的错误有很多假设的解决方案。
以下是我尝试过但都失败的方法:
⚫ 清理项目然后重建
⚫ 删除数据库并重新创建
⚫更改数据库版本号
⚫ 确保语法正确,即使是简单的东西
⚫应用设置->删除所有数据->卸载->重试
错误
android.database.sqlite.SQLiteException: no such table: Item (code 1 SQLITE_ERROR): , while compiling: SELECT * FROM Item
SQLITE 代码
package com.example.flipdb;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class DBHelper extends SQLiteOpenHelper
private static String name = "mydb.db";
private static int version = 4;
public DBHelper(@Nullable Context context)
super(context, name, null, version);
@Override
public void onCreate(SQLiteDatabase db)
String sql = "CREATE TABLE Item (nomeid TEXT , quantidade INTEGER , compra INTEGER, venda INTEGER, margem INTEGER);";
String sql2 = "CREATE TABLE Investimentos (id INTEGER , precocompra INTEGER , precovendaestimado INTEGER, datacompra DATE, datavendaestimado DATE, quantidade INTEGER NOT NULL, nomeid_item TEXT NOT NULL REFERENCES Item(nome) );";
db.execSQL(sql);
db.execSQL(sql2);
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
String sql = "DROP TABLE IF EXISTS Item;";
db.execSQL(sql);
public long Insert_Item(String nomeid, Integer quantidade, Integer compra, Integer venda, Integer margem)
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("nomeid", nomeid);
cv.put("quantidade", quantidade);
cv.put("compra", compra);
cv.put("venda", venda);
cv.put("margem", margem);
return db.insert("Item", null, cv);
public long Insert_Investimentos(Integer id, Integer precocompra, Integer precovendaestimado, String datacompra, String datavendaestimado, Integer quantidade, String nomeid_item)
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("id", id);
cv.put("precocompra", precocompra);
cv.put("precovendaestimado", precovendaestimado);
cv.put("datacompra", datacompra);
cv.put("datavendaestimado", datavendaestimado);
cv.put("quantidade", quantidade);
cv.put("nomeid_item", nomeid_item);
return db.insert("Investimentos", null, cv);
public long Update_Item(String nomeid, Integer quantidade)
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("quantidade", quantidade);
return db.update("Item", cv, "nomeid=?", new String[] nomeid);
public long Update_Investimentos(String id, Integer precovendaestimado, String datavendaestimado, Integer quantidade)
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("precovendaestimado", precovendaestimado);
cv.put("datavendaestimado", datavendaestimado);
cv.put("quantidade", quantidade);
return db.update("Investimentos", cv, "id=?", new String[] id);
public long Delete_Item(String nomeid)
SQLiteDatabase db = getWritableDatabase();
return db.delete("Item", "nomeid=?", new String[] nomeid);
public long Delete_Investimentos(String id)
SQLiteDatabase db = getWritableDatabase();
return db.delete("Investimentos", "id=?", new String[] id);
public Cursor Select_All_Item()
SQLiteDatabase db = getWritableDatabase();
return db.rawQuery("SELECT * FROM Item", null);
public Cursor Select_All_Investimentos()
SQLiteDatabase db = getWritableDatabase();
return db.rawQuery("SELECT * FROM Investimentos", null);
希望我能得到一些帮助,因为我真的努力让它工作,它需要工作,谢谢。 谁读到这里,有什么要求,我都会提供。
【问题讨论】:
您是否在全新安装或升级时遇到异常? @MohammedAbdulBari 启动时致命异常 崩溃的一个原因可能是 onUpgrade 方法,因为它会删除项目表,如果您只关心全新安装,请摆脱该方法 删除表后记得在onUpgrade
中再次调用onCreate
【参考方案1】:
我找到了我正在寻找的解决方法
转到您的 AndroidManifest.xml 并更改以下内容
android:allowBackup="true" -> android:allowBackup="false"
【讨论】:
这解决了您的问题,仅适用于全新安装,但是如果您从旧版本的应用程序更新到新版本,它仍然会崩溃,您应该巩固您的数据库逻辑和迁移.以上是关于android.database.sqlite.SQLiteException:没有这样的表:table_name的主要内容,如果未能解决你的问题,请参考以下文章