SQLiteException:在编译时出现“”语法错误(代码1)

问题描述:

编译时出现此错误,我不知道为什么,有人能帮助我吗?SQLiteException:在编译时出现“”语法错误(代码1)

public 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 +”'“;' – 2013-03-23 18:26:27

尝试下面的代码: -

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

你错过了单引号..

+0

它的作品!谢谢 – user2202906 2013-03-23 18:36:06

+0

@ user2202906多数民众赞成在伟大!!!!!! – duggu 2013-03-23 18:36:57

+2

最新评论,但我有问题是为什么SQLite是如此无法检测到单引号丢失,并把这个事实放入错误信息?我们得到的错误消息似乎是在灯光真正低下之后创建的。所以很多人都犯了同样的错误,那么错误消息的创建者应该让它陷入沉思并重新思考,而不是? – carl 2016-09-19 21:12:25

文本列值必须用单引号传递。请尝试以下步骤

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