我的语法出了什么问题? (SQLite的)

时间:2016-04-24 06:19:50

标签: java android sqlite

我在我的表中进行了一些更改,现在向我显示此错误。我试着调试但没有运气。有什么想法吗?

" android.database.sqlite.SQLiteException:没有这样的表:tablename(代码1):,同时编译:select * from tablename"

      import java.util.ArrayList;
        import java.util.HashMap;
        import java.util.Hashtable;
        import android.content.ContentValues;
        import android.content.Context;
        import android.database.Cursor;
        import android.database.DatabaseUtils;
        import android.database.sqlite.SQLiteOpenHelper;
        import android.database.sqlite.SQLiteDatabase;

public class DBHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "MyDBName.db";
    public static final String CONT_TABLE_NAME = "tablename";
    public static final String CONT_COLUMN_ID = "id";
    public static final String CONT_COLUMN_CONDUCTIVITY = "conductivity";
    public static final String CONT_COLUMN_MOISTURE = "moisture";
    public static final String CONT_COLUMN_OXYGEN = "oxygen";
    public static final String CONT_COLUMN_PH = "ph";

    private HashMap hp;

    public DBHelper(Context context)
    {
        super(context, DATABASE_NAME , null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL(
                "create table tablename " +
                        "(id integer primary key, conductivity text,ph text,oxygen text, moisture text)"
        );
    }

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

    public boolean insertContact  (String conductivity, String ph, String oxygen, String moisture)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("conductivity", conductivity);
        contentValues.put("ph", ph);
        contentValues.put("oxygen", oxygen);
        contentValues.put("moisture", moisture);

        db.insert("tablename", null, contentValues);
        return true;
    }

    public Cursor getData(int id){
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res =  db.rawQuery( "select * from tablename where id="+id+"", null );
        return res;
    }

    public int numberOfRows(){
        SQLiteDatabase db = this.getReadableDatabase();
        int numRows = (int) DatabaseUtils.queryNumEntries(db, CONT_TABLE_NAME);
        return numRows;
    }

    public boolean updateContact (Integer id, String conductivity, String ph, String oxygen, String moisture)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("conductivity", conductivity);
        contentValues.put("ph", ph);
        contentValues.put("oxygen", oxygen);
        contentValues.put("moisture", moisture);

        db.update("tablename", contentValues, "id = ? ", new String[] { Integer.toString(id) } );
        return true;
    }

    public Integer deleteContact (Integer id)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        return db.delete("tablename",
                "id = ? ",
                new String[] { Integer.toString(id) });
    }

    public ArrayList<String> getAllCotacts()
    {
        ArrayList<String> array_list = new ArrayList<String>();

        //hp = new HashMap();
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res =  db.rawQuery( "select * from tablename", null );
        res.moveToFirst();

        while(res.isAfterLast() == false){
            array_list.add(res.getString(res.getColumnIndex(CONT_COLUMN_CONDUCTIVITY)));
            res.moveToNext();
        }
        return array_list;
    }
}

1 个答案:

答案 0 :(得分:0)

@Shree Krishna是对的,你的数据库中现在没有这样的表。

尝试删除应用程序并重新安装 - 然后将自动调用onCreate(SQLiteDatabase db)并再次创建表。

提示。如果您使用的是CursorLoader,请考虑使用_id字段而不是id