Я столкнулся с проблемой в базе данных sqlite. На самом деле у меня есть 3 .java-файла и вспомогательный класс databse, в котором создается моя база данных, создаются таблицы для вставки и т. Д. Все функции 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);
}
});
}
}
Когда я нажимаю на кнопку, мы достигаем класса 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);
}
});}}
В этом классе я создал объект 'm' класса Databsehelper, который используется для вызова функции Insert_Recipe_Into_DB класса DatabaseHelper. До сих пор не проблема, если я удалю утверждения Intents сверху. Но если я вызываю другой класс активности после вызова функции вставки, он показывает ошибку «forceclose». следующий класс деятельности выглядит следующим образом:
RoughActivity.java
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.java
package mad.project;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper{
static final String dbName="CookBookDatabase";
public DatabaseHelper(Context context)
{
super(context, dbName, null, 33);
// TODO Auto-generated constructor stub
}
static final String Try_Table= "Try_Table";
static final String Recipe= "Recipe";
public void onCreate() {
execSQL("CREATE TABLE "+Try_Table+" ( "+ Recipe + " VARCHAR ) " );
}
private void execSQL(String string) {
// TODO Auto-generated method stub
}
public void Insert_Recipe_Into_DB(String a)
{
SQLiteDatabase db= this.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(Recipe, a);
db.insert(Try_Table, Recipe, cv);
db.close();
}
String[] get_recipe()
{
String [] recipe = null;
SQLiteDatabase db=this.getReadableDatabase();
Cursor count =db.rawQuery("SELECT COUNT(*) FROM "+Try_Table, null);
count.moveToFirst();
if(count.getInt(0) == 0)
{
db.close();
return recipe;
}
if(count.getInt(0)!= 0 )
{
Cursor cur=db.rawQuery("SELECT * FROM "+Try_Table, null);
int br_count =cur.getCount();
if(br_count != 0)
{
int i=0, index;
recipe= new String[br_count];
cur.moveToFirst();
do {
index=cur.getColumnIndex(Recipe);
recipe[i++]=cur.getString(index);
}while(cur.moveToNext());
}
}
db.close();
return recipe;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
}
}
Пожалуйста, скажите мне, где я делаю ошибку, в классе DatabaseHelper или в классе RoughActivity.