2016-04-24 23 views
-3

私はテーブルにいくつかの変更を加えて、今私にこのエラーを表示しています。私はデバッグしようとしていますが運がありません。何か案が?ここで私の構文に何が間違っていますか? (SQLite)

"android.database.sqlite.SQLiteException:いいえ、そのようなテーブル:テーブル名(コード1):、コンパイル中:SELECT * FROMテーブル名から"

 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; 
    } 
} 
+0

あなたのテーブルは作成されていません。 –

+0

どこの列の名前も直接使用したい場合は、なぜ定数を作成しましたか? –

+0

[MVCE](http://stackoverflow.com/help/mcve)および[Javaコードの規則](http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html)をお読みください。 。 –

答えて

0

@Shreeクリシュナは右である、あなたはそのようなテーブルを持っていません今あなたのデータベースにあります。

アプリケーションを削除してからもう一度インストールしてください。 - onCreate(SQLiteDatabase db)が自動的に呼び出され、再度テーブルが作成されます。

ヒント。CursorLoaderを使用している場合は、idの代わりに_idフィールドを使用することを検討してください。

関連する問題