Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – OrmLite SQLiteException:没有这样的表大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 Android上使用以下DatabaseHelper和 OrmLite

@H_772_7@public class DatabaseHelper extends OrmLitesqliteOpenHelper { private static final String TAG = "databaseHelper"; private static final String DATABASE_NAME = "mydb.db"; // Mind onUpgrade when changing this! private static final int DATABASE_VERSION = 18; private Dao<Account,Integer> accountDao; public DatabaseHelper(Context context) { super(context,DATABASE_NAME,null,DATABASE_version); } @Override public void onCreate(sqliteDatabase sqliteDatabase,Connectionsource connectionsourcE) { try { TableUtils.createTable(connectionsource,Account.class); } catch (sqlException E) { ExceptionHandler.handleException(E); } } @Override public void onUpgrade(sqliteDatabase database,Connectionsource connectionsource,int oldVersion,int newVersion) { } private Dao<Account,Integer> getAccountDao() { if (accountDao == null) { try { accountDao = getDao(Account.class); } catch (Exception exC) { Log.e(tag,exc.toString()); ExceptionHandler.handleException(exc); } } return accountDao; } public void writeAccount(Account account) { try { TableUtils.createTableIfNotExists(connectionsource,IWAccount.class); getAccountDao().createOrupdate(account); } catch (sqlException exC) { Log.e(tag,exc.toString()); ExceptionHandler.handleException(exc); } } public void deleteIWAccount() { try { TableUtils.clearTable(connectionsource,Account.class); } catch (sqlException E) { Log.e(tag,e.toString()); ExceptionHandler.handleException(E); e.printStackTrace(); } } public Account getAccount() { List<Account> accounts = null; try { accounts = getAccountDao().queryForAll(); } catch (sqlException E) { e.printStackTrace(); ExceptionHandler.handleException(E); } if (accounts == null || accounts.isEmpty()) { return null; } if (accounts.size() > 1) { ExceptionHandler.handleException(new IllegalStateException("More than 1 IWAccounts in DB")); } return accounts.get(0); } }

处理的例外都写入Crittercism.

对于小但不可忽略的用户数,会发生以下异常:

@H_772_7@java.sql.sqlException: Problems execuTing Android query: SELECT * FROM `account` at com.j256.ormlite.misc.sqlExceptionUtil.create(sqlExceptionUtil.java:22) [...] Caused by: android.database.sqlite.sqliteException: no such table: account (code 1):,while compiling: SELECT * FROM `account`

我的DatabaseHelper尝试在其onCreate()方法中为Account创建表.

我的第一个想法是在onCreate()中创建表时出错了.批评然让我浏览发生此错误用户的所有其他已处理或未处理的异常,并且在创建表时没有任何异常.

关于这可能是什么问题的任何想法?

编辑:这是我的DatabaseHelper的简化版本,与其他Daos和表相同的错误.使用的类非常简单,这里是Account类:

@H_772_7@public class Account implements serializable { // id is set so we always update the old object instead of creaTing a new one in the db Helper @DatabaseField(id = true,canBeNull = falsE) privatE int mid = 0; @DatabaseField private String id; @DatabaseField private String userName; @DatabaseField private String displayName; }

EDIT2:我对应用程序进行了更新,我的持久化类使用@DatabaseTable注释并重新创建(或尝试)onUpgrade()中的表,但问题仍然存在.

解决方法

从我所看到的,您在Account类中缺少@DatabaseTable注释.

docs

以下应创建一个表帐户:

@H_772_7@@DatabaseTable public class Account implements serializable { // id is set so we always update the old object instead of creaTing a new one in the db Helper @DatabaseField(id = true,canBeNull = falsE) privatE int mid = 0; @DatabaseField private String id; @DatabaseField private String userName; @DatabaseField private String displayName; }

您可以使用注释中的tablename字段来更改表名称,例如@DatabaseTable(tablename =“accounts”)否则文档状态:

大佬总结

以上是大佬教程为你收集整理的android – OrmLite SQLiteException:没有这样的表全部内容,希望文章能够帮你解决android – OrmLite SQLiteException:没有这样的表所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。