2013-04-16 40 views
0

我不是android编程方面的专家,这是一门课程。每次尝试使用模拟器插入数据logcat都会告诉我该表不存在。我想我可能不会正确地调用我的onCreate方法,但我不知道。不知道是否有人能指出来给我,这里是我的代码:SQLite异常:没有这样的表。想不通为什么

package com.mknowles.locationapp; 

import android.content.ContentValues; 

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 

public class Entries { 

    public static final String KEY_ID = "_id"; 
    public static final String KEY_TITLE = "title"; 
    public static final String KEY_LOCATION = "location"; 
    public static final String KEY_DATE = "entryDate"; 
    public static final String KEY_TIME = "entryTime"; 
    public static final String KEY_DESCRIPTION = "description"; 

    private static final String DB_NAME = "LocationEntries_db"; 
    private static final String DB_TABLE = "entries_table"; 
    private static final int DB_VERSION = 1; 

    private DbHelper dbhelper; 
    private final Context appContext; 
    private SQLiteDatabase entriesDb; 

    private static class DbHelper extends SQLiteOpenHelper { 

     public DbHelper(Context context) { 
      super(context, DB_NAME, null, DB_VERSION); 
      // TODO Auto-generated constructor stub 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      // TODO Auto-generated method stub 
      db.execSQL(
        "CREATE TABLE " + DB_TABLE + " (" 
      + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
      + KEY_TITLE + " TEXT NOT NULL, " 
      + KEY_LOCATION + "TEXT, " 
      + KEY_DATE + " TEXT NOT NULL, " 
      + KEY_TIME + " TEXT, " 
      + KEY_DESCRIPTION + " TEXT);" 
       ); 

     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      // TODO Auto-generated method stub 
      db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE); 
      onCreate(db); 
     } 

    } 

    public Entries(Context context){ 
     appContext = context; 

    } 

    public Entries open(){ 
     dbhelper = new DbHelper(appContext); 
     entriesDb = dbhelper.getWritableDatabase(); 
     return this; 
    } 

    public void close(){ 
     dbhelper.close(); 
    } 

    public long createEntry(String title, String location, String date, String time, String description) { 
     // TODO Auto-generated method stub 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_TITLE, title); 
     cv.put(KEY_LOCATION, location); 
     cv.put(KEY_DATE, date); 
     cv.put(KEY_TIME, time); 
     cv.put(KEY_DESCRIPTION, description); 
     return entriesDb.insert(DB_TABLE, null, cv); 
    } 
} 
package com.mknowles.locationapp; 

import android.os.Bundle; 
import android.app.Activity; 
import android.database.sqlite.SQLiteDatabase; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MakeEntryActivity extends Activity implements OnClickListener { 

    Button sqlSave; 
    EditText mTitle, mLocation, mDate, mTime, mDescription; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_make_entry); 
     mTitle = (EditText) findViewById(R.id.etTitle); 
     mLocation = (EditText) findViewById(R.id.etLocation); 
     mDate = (EditText) findViewById(R.id.etDate); 
     mTime = (EditText) findViewById(R.id.etTime); 
     mDescription = (EditText) findViewById(R.id.etDescription); 
     sqlSave = (Button) findViewById(R.id.bSave); 

     sqlSave.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     switch(v.getId()){ 
     case R.id.bSave: 

      String title = mTitle.getText().toString(); 
      String location = mLocation.getText().toString(); 
      String date = mDate.getText().toString(); 
      String time = mTime.getText().toString(); 
      String description = mDescription.getText().toString(); 

      Entries entry = new Entries(MakeEntryActivity.this); 
      entry.open(); 
      entry.createEntry(title, location, date, time, description); 
      entry.close(); 

      Toast t = Toast.makeText(this, "Saving", Toast.LENGTH_SHORT); 
      t.show(); 

      break; 
     } 
    } 
} 
+0

您是否在不增加数据库版本的情况下修改/更新应用程序,然后再安装它? –

回答

2

你有一个小错字您打造:

+ KEY_LOCATION + "TEXT, " 

应该是:

+ KEY_LOCATION + " TEXT, " 
+0

非常敏锐的眼睛。 +1。 – drunkenRabbit

+0

我在搞乱sqlite方面非常有经验。 – HalR

+0

谢谢男士,抱歉等了很久才接受 – MattKnowles

0

删除dbhelper = new DbHelper(appContext);public Entries open()