2013-03-23 15 views
7

コンパイル時にこのエラーが発生しました。SQLiteException:コンパイル中に "":構文エラー(コード1)が発生しました

パブリックstatic final String TABLE_BEERS = "cervezas";

// Contacts Table Columns names 
public static final String KEY_NAME = "_id"; 
public static final String KEY_COMPANY = "company"; 
public static final String KEY_TYPE = "type"; 
public static final String KEY_ALCOHOL = "alcohol"; 


public DatabaseHandler(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 

    String query = String.format("CREATE TABLE %s (%s STRING PRIMARY KEY,%s TEXT, %s TEXT, %s TEXT);", 
      TABLE_BEERS, KEY_NAME, KEY_COMPANY, 
      KEY_TYPE, KEY_ALCOHOL); 

    /* 
    String CREATE_BEER_TABLE = "create table " + TABLE_BEERS + "(" 
      + KEY_NAME + " STRING PRIMARY KEY," 
      + KEY_COMPANY + " TEXT," 
      + KEY_TYPE + " TEXT," 
      + KEY_ALCOHOL + " TEXT)";*/ 
    db.execSQL(query); 

これは何が起こっているテーブルを作成

public List<Cervezas> getCompanyCervezas(String compania){ 

      List<Cervezas> cervezasList = new ArrayList<Cervezas>(); 
      // Select All Query 
      String selectQuery = "SELECT _id, type, alcohol FROM " + TABLE_BEERS + " WHERE company=" + compania; 

      SQLiteDatabase db = this.getReadableDatabase(); 
      Cursor cursor = db.rawQuery(selectQuery, null); 

LogCat

android.database.sqlite.SQLiteException: no such column : Alean (code 1): , while compiling: SELECT _id, type, alcohol FROM cervezas WHERE company=Alean 

のためにあるのですか?

+1

'String'パラメータは引用符で囲む必要があります。 '' SELECT _id、type、alcohol FROM "+ TABLE_BEERS +" where company = "" + compania + "'"; –

答えて

8

はコードの下に試してください: -

String selectQuery = "SELECT _id, type, alcohol FROM " + TABLE_BEERS + " WHERE company= ' " + compania+" ' "; 

あなたは、単一引用符を欠場...

+0

それは動作します!ありがとうございます – user2202906

+0

@ user2202906 thats great !!!!!! – duggu

+2

後半のコメントですが、私が持っている質問は、SQLiteが単一の見積もりが見つからないことを検出できず、その事実をエラーメッセージに入れる理由です。私たちが得るエラーメッセージは、ライトが本当に低くなった後に作成されたようです。非常に多くの人が同じバグを作っています。そして、エラーメッセージの作成者がそれを沈み込ませて新たに考えさせるべきではないでしょうか? – carl

1

テキスト列の値は、単一引用符で渡す必要があります。以下を試してください

String selectQuery = "SELECT _id, type, alcohol FROM " + TABLE_BEERS + " WHERE company= '" + compania +"'"; 
関連する問題