Java 游标未从sqlite数据库检索数据

Java 游标未从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.

我在sqlite数据库中遇到了一个问题。实际上,我有3.java文件和一个database helper类,其中创建了我的数据库,创建了表插入等。所有CRUD函数,我试图从其他一些活动类调用它们,但它并没有调用,也没有从表中检索数据。这是我的档案,谁能告诉我哪里出错了

MainActivity.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
    }
  }
当我点击按钮时,我们将进入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;对于插入方法,无论哪种方法都可以。如果这是您的要求,它们都要求您打开数据库。