2015-03-16 3 views
-1

что я пытаюсь сделать, это создать таблицу, а затем вставить в нее некоторые значения и выбрать. Проблема, с которой я столкнулся, это приложение, к сожалению, останавливается. Я не знаю, в чем проблема.android Доступ к базе данных не работает

Мой код: Этот класс вызывает обработчик базе данных

public class SaveEvents extends Activity { 
private static final String DB_NAME = "EventDB"; 
@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.edit_product); 
    Bundle extras=getIntent().getExtras(); 
    String event=extras.getString("event"); 
    String date=extras.getString("date"); 
    String college=extras.getString("college"); 

    DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 
    db.insert_data(event,date,college); 
    String c=db.select_data(); 
    Toast.makeText(getApplicationContext(), "EventName: "+c+"", Toast.LENGTH_LONG).show(); 
} 
} 

Handler Database

public class DatabaseHandler extends SQLiteOpenHelper { 

private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "EventDB"; 
private static final String TABLE_NAME = "eventlist"; 


public DatabaseHandler(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    // Category table create query 
    String CREATE_ITEM_TABLE; 
    CREATE_ITEM_TABLE = "CREATE TABLE eventlist(eventname varchar(100),eventdate varchar(100),college varchar(100));"; 
    db.execSQL(CREATE_ITEM_TABLE); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

} 
void insert_data(String eventname,String date,String college) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put("eventname", eventname); 
    values.put("eventdate",date); 
    values.put("college",college); 
    db.insert(TABLE_NAME,null,values); 
    db.close(); 
} 
public String select_data() 
    { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    String selectQuery = "SELECT eventname FROM eventlist where eventname='techcontest'"; 
    String c=null; 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    cursor.moveToFirst(); 
    c=cursor.getString(0); 
    return c; 
} 
} 

Мой LogCat показывает

03-16 20:00:19.116 8378-8378/com.example.android E/SQLiteLog﹕ (1) no  such table: eventlist 
03-16 20:00:19.122 8378-8378/com.example.android E/SQLiteDatabase﹕ Error inserting college=acs university eventdate=2-02-15 eventname=techocontest 
android.database.sqlite.SQLiteException: no such table: eventlist (code 1): , while compiling: INSERT INTO eventlist(college,eventdate,eventname) VALUES (?,?,?) 
+0

любой стекловидный? –

+0

Ваш код базы данных 'insert_data()' должен быть в транзакции и передан, если вам нравится код возврата. http://www.vogella.com/tutorials/AndroidSQLite/article.html –

+1

Можете ли вы удалить приложение с вашего устройства/эмулятора и попробовать еще раз? * Возможно, вы уже запустили это приложение с другим определением схемы базы данных, ваше приложение, возможно, уже создало «базу данных версии 1». 'OnCreate' вызывается только в том случае, если база данных еще не существует. Сообщение об ошибке« no such table: eventlist »указывает на то, что ваш onCreate не был вызван. * – Gorcyn

ответ

0

Это не выглядит, как вы закрываете базы данных в методе select_data().

Смежные вопросы