Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLiteOpenHelper-每个表都有不同的类?_Android_Sqlite_Android Sqlite - Fatal编程技术网

Android SQLiteOpenHelper-每个表都有不同的类?

Android SQLiteOpenHelper-每个表都有不同的类?,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我阅读这篇文章()是为了了解android应用程序中的SQLite数据库 在这篇文章中,他有一个提示: 最好的做法是为每个表创建一个单独的类。此类定义静态onCreate()和onUpgrade()方法。这些方法在SQLiteOpenHelper的相应方法中调用。这样,即使有多个表,SQLiteOpenHelper的实现也可以保持可读性 如果我正确理解了这个技巧,我应该为数据库中的每个表创建一个类 这真的是最佳实践吗 如果是这样,那么使用多个表的复杂查询又如何呢?如果创建在不同的类中,我如何管理

我阅读这篇文章()是为了了解android应用程序中的SQLite数据库

在这篇文章中,他有一个提示:

最好的做法是为每个表创建一个单独的类。此类定义静态onCreate()和onUpgrade()方法。这些方法在SQLiteOpenHelper的相应方法中调用。这样,即使有多个表,SQLiteOpenHelper的实现也可以保持可读性

如果我正确理解了这个技巧,我应该为数据库中的每个表创建一个类

这真的是最佳实践吗

如果是这样,那么使用多个表的复杂查询又如何呢?如果创建在不同的类中,我如何管理它

如何正确保存数据库版本?对于每个表更改,我将更改数据库版本号


谢谢

SQLiteOpenHelper
管理数据库文件,而不是表。您可以使用给定的数据库生命周期回调(
onCreate()
onUpgrade()
)自己管理表

快速阅读可以解释作者主张为每个表创建一个单独的数据库助手(我一开始是这样做的),但事实并非如此。那是个糟糕的建议

重申作者的意图:

  • 一个数据库助手类
  • helper涉及单独的特定于表的helper类,这些类不是
    SQLiteOpenHelper
    s,只是为顶级数据库helper做部分工作

谢谢。使用onCreate方法创建带有查询的表,还是在assets文件夹中准备好一个数据库并复制它更好?想象一下一个包含100个表的数据库。在一个类中管理所有创建和升级逻辑将导致一个非常长的类,其中包含非常长的
onCreate()
onUpgrade()
方法。Lars Vogel建议将其分解,每个表使用单独的类来保存创建和升级逻辑。您仍然只有一个
SQLiteOpenHelper
,它的
onCreate()
onUpgrade()
将把它们的工作委托给其他类上的静态方法。“每个表可靠地有一个helper还意味着有单独的数据库文件,这不必要地使事情复杂化”--这不是Vogel先生的建议。@Commonware谢谢,请从链接教程的附加上下文中重新阅读引用的部分,并重新表述答案。我在文章示例中没有看到如何做到这一点。你能帮我弄清楚吗?希望正确构建我的应用:)