Java 游标未从sqlite数据库检索数据
我在sqlite数据库中遇到了一个问题。实际上,我有3.java文件和一个database helper类,其中创建了我的数据库,创建了表插入等。所有CRUD函数,我试图从其他一些活动类调用它们,但它并没有调用,也没有从表中检索数据。这是我的档案,谁能告诉我哪里出错了 MainActivity.javaJava 游标未从sqlite数据库检索数据,java,android,sqlite,Java,Android,Sqlite,我在sqlite数据库中遇到了一个问题。实际上,我有3.java文件和一个database helper类,其中创建了我的数据库,创建了表插入等。所有CRUD函数,我试图从其他一些活动类调用它们,但它并没有调用,也没有从表中检索数据。这是我的档案,谁能告诉我哪里出错了 MainActivity.java package mad.project; import android.app.Activity; import android.content.Intent; import android.
package mad.project;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DatabaseHelper m = new DatabaseHelper(this);
m.onCreate();
Button menubutton4 = (Button) findViewById(R.id.InsertRecipeButton);
menubutton4.setOnClickListener(new View.OnClickListener() {
public void onClick(View argo) {
Intent intent4 = new Intent(MainActivity.this, TryActivity.class);
startActivity(intent4);
}
});
}
}
package mad.project;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class RoughActivity extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final DatabaseHelper m = new DatabaseHelper(this);
String [] rec ;
rec=m.get_recipe();
int rec_len = rec.length;
String [] todaymenu = new String[rec_len];
for(int i = 1;i<=rec_len;i++)
{
todaymenu[i]=rec[i-1];
}
this.setListAdapter(newArrayAdapter<String>(RoughActivity.this,
R.layout.todays_menu_view,R.id.Today,rec));
}
private void setListAdapter(ArrayAdapter<String> arrayAdapter) {
// TODO Auto-generated method stub
}
}
当我点击按钮时,我们将进入TryActivity类,如下所示:
package mad.project;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class TryActivity extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.insertrecipe);
final DatabaseHelper m = new DatabaseHelper(this);
final EditText RecipeBox = (EditText) findViewById(R.id.RecipeBox);
Button submit_button = (Button) findViewById(R.id.SubmitRecipe);
submit_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
String a=RecipeBox.getText().toString();
m.Insert_Recipe_Into_DB(a);
Intent intent23 = new Intent(TryActivity.this,RoughActivity.class);
startActivity(intent23);
}
});}}
在这个类中,我创建了DatabaseHelper类的一个对象“m”,用于将Insert_Recipe_调用到DatabaseHelper类的_DB函数中。如果我删除上面的Intents语句,则正常运行现在没有问题。但如果我在调用插入函数后调用另一个活动类,它将显示forcesclose错误。下一个活动类如下所示:
package mad.project;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class TryActivity extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.insertrecipe);
final DatabaseHelper m = new DatabaseHelper(this);
final EditText RecipeBox = (EditText) findViewById(R.id.RecipeBox);
Button submit_button = (Button) findViewById(R.id.SubmitRecipe);
submit_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
String a=RecipeBox.getText().toString();
m.Insert_Recipe_Into_DB(a);
Intent intent23 = new Intent(TryActivity.this,RoughActivity.class);
startActivity(intent23);
}
});}}
java
package mad.project;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DatabaseHelper m = new DatabaseHelper(this);
m.onCreate();
Button menubutton4 = (Button) findViewById(R.id.InsertRecipeButton);
menubutton4.setOnClickListener(new View.OnClickListener() {
public void onClick(View argo) {
Intent intent4 = new Intent(MainActivity.this, TryActivity.class);
startActivity(intent4);
}
});
}
}
package mad.project;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class RoughActivity extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final DatabaseHelper m = new DatabaseHelper(this);
String [] rec ;
rec=m.get_recipe();
int rec_len = rec.length;
String [] todaymenu = new String[rec_len];
for(int i = 1;i<=rec_len;i++)
{
todaymenu[i]=rec[i-1];
}
this.setListAdapter(newArrayAdapter<String>(RoughActivity.this,
R.layout.todays_menu_view,R.id.Today,rec));
}
private void setListAdapter(ArrayAdapter<String> arrayAdapter) {
// TODO Auto-generated method stub
}
}
请告诉我我在哪里犯了错误,无论是在DatabaseHelper类还是活动类 您需要在检索数据或将数据插入SQLite数据库的活动中打开数据库。也要确保你完成任务后将其关闭
final DatabaseHelper m = new DatabaseHelper(this);
m.open();
在onDestroy或暂停中。
召唤
这可能就是问题所在,因为我看不到在代码中打开数据库的位置
编辑:
在DatabaseHelper类中。创建一个方法
public void open(){
db.open();
}
public void close(){
db.close()
}
然后,您将拥有在活动中关闭和打开数据库的方法,您需要在其中插入和检索信息。这似乎是可能的问题。当您试图访问数据库时,它显示我应该定义这个对象数据库吗?我在使用close方法时完成了此操作,如下所示:SQLiteDatabase db=this.getReadableDatabase;对于插入方法,无论哪种方法都可以。如果这是您的要求,它们都要求您打开数据库。