【问题标题】:Android Studio: Database Access Issue when clicking the list viewAndroid Studio:单击列表视图时出现数据库访问问题
【发布时间】:2018-02-12 23:03:48
【问题描述】:

在我得到的Logicat中,我已经使用navicat在数据库中创建了我的表

进程:sspldatacollection.rt.mils.sspldatacollection,PID:23888 java.lang.RuntimeException:无法启动活动 组件信息{sspldatacollection.rt.mils.sspldatacollection/sspldatacollection.rt.mils.sspldatacollection.Activity.BccListActivity}: android.database.sqlite.SQLiteException:没有这样的表:密件抄送(代码 1): ,编译时:SELECT * FROM bcc ################################################## ############### 错误代码:1(SQLITE_ERROR) 原因:SQL(查询)错误或缺少数据库。 (没有这样的表:bcc(代码1):,编译时:SELECT * FROM bcc)

下面是代码

package sspldatacollection.rt.mils.sspldatacollection.Databse;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
import java.util.List;

import sspldatacollection.rt.mils.sspldatacollection.Constant;
import sspldatacollection.rt.mils.sspldatacollection.Model.Form;
import sspldatacollection.rt.mils.sspldatacollection.Model.Bcc;
import sspldatacollection.rt.mils.sspldatacollection.Model.User;



public class DatabaseAccess {
private SQLiteOpenHelper openHelper;
private SQLiteDatabase database;
private static DatabaseAccess instance;

/**
 * Private constructor to aboid object creation from outside classes.
 *
 * @param context
 */
private DatabaseAccess(Context context) {
    this.openHelper = new DatabaseOpenHelper(context);

}

/**
 * Return a singleton instance of DatabaseAccess.
 *
 * @param context the Context
 * @return the instance of DabaseAccess
 */
public static DatabaseAccess getInstance(Context context) {
    if (instance == null) {
        instance = new DatabaseAccess(context);
    }
    return instance;
}

/**
 * Open the database connection.
 */
public SQLiteDatabase open() {
    this.database = openHelper.getWritableDatabase();
    return this.database;
}

/**
 * Close the database connection.
 */
public void close() {
    if (database != null) {
        this.database.close();
    }
}






/**
 * Read all quotes from the database.
 *
 * @return a List of quotes
 */
public List<User> getUsers() {
    List<User> list = new ArrayList<>();
    Cursor cursor = database.rawQuery("SELECT * FROM user", null);
    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
        User u=new User(cursor.getString(0),cursor.getString(1));
        list.add(u);
        cursor.moveToNext();
    }
    cursor.close();
    return list;
}

public List<Form> getForm() {
    String userid5 = Constant.preferences.getString(Constant.USERID, "");
    List<Form> list = new ArrayList<>();
    Cursor cursor = database.rawQuery("SELECT * FROM form", null);
    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
        Form u=new Form(cursor.getString(0),cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4),cursor.getString(5),cursor.getString(6),cursor.getString(7),cursor.getString(8),cursor.getString(9),cursor.getString(10),cursor.getString(11),cursor.getString(12),cursor.getString(13),cursor.getString(14),cursor.getString(15),cursor.getString(16),cursor.getString(17),cursor.getString(18),cursor.getString(19),cursor.getString(20),cursor.getString(21),cursor.getString(22),cursor.getString(23),cursor.getString(24),cursor.getString(25),cursor.getString(26),cursor.getString(27),cursor.getString(28),cursor.getString(29),cursor.getString(30),cursor.getString(31),cursor.getString(32),cursor.getString(33));
        list.add(u);
        cursor.moveToNext();
    }
    cursor.close();
    return list;
}

public List<Bcc> getBcc() {
    String userid5 = Constant.preferences.getString(Constant.USERID, "");
    List<Bcc> list = new ArrayList<>();
    Cursor cursor = database.rawQuery("SELECT * FROM bcc", null);
    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
        Bcc u=new Bcc(cursor.getString(0), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6), cursor.getString(7), cursor.getString(8), cursor.getString(9), cursor.getString(10), cursor.getString(11), cursor.getString(12), cursor.getString(13), cursor.getString(14), cursor.getString(15), cursor.getString(16), cursor.getString(17), cursor.getString(18), cursor.getString(19), cursor.getString(20), cursor.getString(21), cursor.getString(22), cursor.getString(23), cursor.getString(24), cursor.getString(25), cursor.getString(26), cursor.getString(27), cursor.getString(28), cursor.getString(29), cursor.getString(30), cursor.getString(31), cursor.getString(32), cursor.getString(33), cursor.getString(34), cursor.getString(35), cursor.getString(36), cursor.getString(37), cursor.getString(38), cursor.getString(39), cursor.getString(40), cursor.getString(41), cursor.getString(42), cursor.getString(43), cursor.getString(44), cursor.getString(45), cursor.getString(46), cursor.getString(47), cursor.getString(48), cursor.getString(49), cursor.getString(50), cursor.getString(51), cursor.getString(52), cursor.getString(53), cursor.getString(54), cursor.getString(55), cursor.getString(56), cursor.getString(57), cursor.getString(58), cursor.getString(59), cursor.getString(60), cursor.getString(61), cursor.getString(62), cursor.getString(63), cursor.getString(64), cursor.getString(65), cursor.getString(66), cursor.getString(67), cursor.getString(68), cursor.getString(69), cursor.getString(70), cursor.getString(71), cursor.getString(72), cursor.getString(73), cursor.getString(74), cursor.getString(75), cursor.getString(76), cursor.getString(77), cursor.getString(78), cursor.getString(79), cursor.getString(80), cursor.getString(81), cursor.getString(82), cursor.getString(83));
        list.add(u);
        cursor.moveToNext();
    }
    cursor.close();
    return list;
}
}

我也忘了提到我已经将表从 mySQL 导入到 Navicat 中的 SQLite

【问题讨论】:

  • 向我们展示代码
  • 代码已添加
  • Navicat 中的内容是如何进入应用程序的?您可能希望使用logDatabaseInfo,这很可能表明该应用程序与 NaviCat 中的内容不同步,并且表 bcc 不存在。修复可能很简单,比如删除应用的数据或卸载应用。
  • 谢谢一百万,真的,卸载并重新安装应用程序就这么简单。

标签: java android sqlite


【解决方案1】:

您需要遵循的过程来找出导致此错误的原因是您需要转储数据库中当前设置的所有表。我假设它可能是简单的错字。

【讨论】:

  • 调试建议应该是 cmets,而不是答案。你现在有足够的代表来评论这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多