Java 初始创建后将文本文件重新加载到数据库中
问题 我编写了一个简单的、基于Android的闪存卡程序,该程序从存储在设备上的文本文件(例如.csv、.xml)加载字典,并允许用户逐步浏览单词和定义 我一直试图实现一个菜单选项,用户可以在其中重新加载文本文件,但没有成功。例如,他们向文本文件中添加了单词,并将其复制到SD卡中。这些文件都相对较小,约30kB 我的代码是基于谷歌SDK提供的示例应用程序的批发。它使用它们的DbHelper 闪存卡位按预期工作,但我无法重新加载文本文件。我想我有两个问题无法解决: 我错误地试图调用添加到DbHelper类中的方法来启动onUpgrade。下面的代码在Eclipse中出现了一个错误。 我正在错误地或不必要地执行onUpgrade以删除当前表并读取新文本文件。 下面是我为解决这个问题而研究的StackOverflow条目。它们是有用的背景,但我一直无法使用它们来解决我的问题 代码 在菜单中,有两个选项。开始程序并重新加载字典文件。以下是在启动时加载的简单启动活动中选择的OnOptionMenuItem:Java 初始创建后将文本文件重新加载到数据库中,java,android,sqlite,csv,text-files,Java,Android,Sqlite,Csv,Text Files,问题 我编写了一个简单的、基于Android的闪存卡程序,该程序从存储在设备上的文本文件(例如.csv、.xml)加载字典,并允许用户逐步浏览单词和定义 我一直试图实现一个菜单选项,用户可以在其中重新加载文本文件,但没有成功。例如,他们向文本文件中添加了单词,并将其复制到SD卡中。这些文件都相对较小,约30kB 我的代码是基于谷歌SDK提供的示例应用程序的批发。它使用它们的DbHelper 闪存卡位按预期工作,但我无法重新加载文本文件。我想我有两个问题无法解决: 我错误地试图调用添加到DbHel
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
/*case INSERT_ID:
createNote();
return true;*/
case FLASH_CARDS:
Intent myIntent = new Intent(Cards.this, FlashCards.class);
startActivity(myIntent);
return true;
case RELOAD_FILE:
DbAdapter.reload();
}
return super.onOptionsItemSelected(item);
}
我从DbAdapter.reload中得到一个错误,我不理解这个错误,无法从CarteDbAdapter类型对非静态方法reload进行静态引用
下面是我添加到DB中的重新加载方法:
公共空间重新加载{
SQLiteDatabase tableau = mDatabaseOpenHelper.getReadableDatabase();
int versionNum = tableau.getVersion();
Log.w(TAG, "Current Version: " + versionNum);
mDatabaseOpenHelper.onUpgrade(tableau, versionNum, versionNum+1);
tableau.close();
}
这使我在Eclipse中没有错误
感谢您抽出时间阅读此文章。我希望它也能帮助其他初学者
我从数据库中得到一个错误
DbAdapter.reload,但我没有
理解不能使一个静态
参考非静态方法
从CartedAdapter类型重新加载
这是因为DbAdapter类中的reload方法不是静态的,但是您调用它就像调用它是静态的一样。
您有两种选择:
创建DbAdapter类型的实例并对其调用reload。或
或者,将“重新加载”方法更改为静态
以下哪项是正确的取决于DbAdapter类的设计。谢谢vdstw。我认为针对SampleDictionary代码的DbAdapter的设计要求我使用您的第一个选项,即声明重载静态导致我发现难以解决的涟漪影响。当你说创建一个实例并调用reload时,你能给我一个例子来说明你的意思吗?再次感谢您。创建实例是基本的Java101:new DbAdapter,但正如我所说的,这一切都取决于类的设计。由于没有提供DbAdapter类,我无法进一步帮助您。