Erreur SQLite requête select
Bonjour,
Je fais une requête SELECT mais l'erreur suivante s'affiche:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| 06-11 11:27:11.051: E/AndroidRuntime(873): FATAL EXCEPTION: main
06-11 11:27:11.051: E/AndroidRuntime(873): android.database.sqlite.SQLiteException: near ""Petot"": syntax error: , while compiling: SELECT nbpizzaencours FROM client WHERE nomLIKE "Petot"
06-11 11:27:11.051: E/AndroidRuntime(873): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:127)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:94)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:53)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1564)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1449)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1405)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1485)
06-11 11:27:11.051: E/AndroidRuntime(873): at com.example.cartedefidelite.clientBDD.getNbpizzawithNom(clientBDD.java:99)
06-11 11:27:11.051: E/AndroidRuntime(873): at com.example.cartedefidelite.FideliteActivity$1.onClick(FideliteActivity.java:39)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.view.View.performClick(View.java:3480)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.view.View$PerformClick.run(View.java:13983)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.os.Handler.handleCallback(Handler.java:605)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.os.Handler.dispatchMessage(Handler.java:92)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.os.Looper.loop(Looper.java:137)
06-11 11:27:11.051: E/AndroidRuntime(873): at android.app.ActivityThread.main(ActivityThread.java:4340)
06-11 11:27:11.051: E/AndroidRuntime(873): at java.lang.reflect.Method.invokeNative(Native Method)
06-11 11:27:11.051: E/AndroidRuntime(873): at java.lang.reflect.Method.invoke(Method.java:511)
06-11 11:27:11.051: E/AndroidRuntime(873): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-11 11:27:11.051: E/AndroidRuntime(873): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-11 11:27:11.051: E/AndroidRuntime(873): at dalvik.system.NativeStart.main(Native Method) |
Et voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| public class FideliteActivity extends AffichageClientActivity /*implements View.OnClickListener*/ {
clientBDD clibdd = new clientBDD(this);
EditText nombre;
Button detail;
Button ok;
String nomduclient;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fidelite);
//récupération de la valeur de l'edittext
Bundle objetbundle = this.getIntent().getExtras();
nomduclient = objetbundle.getString("nomclient");
detail = (Button) findViewById(R.id.Detail);
ok = (Button) findViewById(R.id.valider);
nombre = (EditText) findViewById(R.id.nb);
ok.setOnClickListener(validerListener);
detail.setOnClickListener(detailclientListener);
}
private OnClickListener validerListener = new OnClickListener(){
public void onClick(View v){
if(v==ok){
//récupération de la valeur dans l'EditText
String nb = nombre.getText().toString();
int nbpizz = Integer.parseInt(nb);
//connexion à la BDD et récupération du nombre de pizza existant
cliBDD.open();
cli = cliBDD.getNbpizzawithNom(nomduclient);
int nbexist = cli.getNbpizzaencours();
//calcul plus affichage des avantages fidelité
nbexist = nbexist + nbpizz;
if(nbexist >=30)
{
Toast.makeText(
FideliteActivity.this,
"3 pizzas gratuites!",
Toast.LENGTH_LONG).show();
nbexist = nbexist-30;
}
else if(nbexist >=20){
Toast.makeText(
FideliteActivity.this,
"2 pizzas gratuites!",
Toast.LENGTH_LONG).show();
nbexist = nbexist-20;
}else if(nbexist >=10){
Toast.makeText(
FideliteActivity.this,
"1 pizza gratuite!",
Toast.LENGTH_LONG).show();
nbexist = nbexist-10;
}
else{
Toast.makeText(
FideliteActivity.this,
"Pas de pizza gratuite pour cette fois!",
Toast.LENGTH_LONG).show();
}
//mis à jour de la BDD
//cliBBD.updateClient(int id, client cli);
//fermeture de la BDD
cliBDD.close();
}
}
};
private OnClickListener detailclientListener = new OnClickListener(){
public void onClick(View v){
Intent versDetail = new Intent(getApplicationContext(),
DetailClientActivity.class);
versDetail.putExtra("nomclient",nomduclient);
startActivity(versDetail);
}
};
} |
Ainsi que ma fonction
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public client getNbpizzawithNom(String nom) {
Cursor c = bdd.query(TABLE_CLIENT, new String[] { COL_PIZZAENCOURS },
COL_NOM + "LIKE \"" + nom + "\"", null, null, null, null);
return cursorToClient(c);
}
public client cursorToClient(Cursor c) {
if (c.getCount() == 0) {
return null;
}
c.moveToFirst();
client cli = new client();
cli.setId(c.getInt(NUM_COL_ID));
cli.setNom(c.getString(NUM_COL_NOM));
cli.setPrenom(c.getString(NUM_COL_PRENOM));
cli.setAdresse(c.getString(NUM_COL_ADRESSE));
cli.setCp(c.getString(NUM_COL_CP));
cli.setVille(c.getString(NUM_COL_VILLE));
cli.setMail(c.getString(NUM_COL_MAIL));
cli.setTel(c.getString(NUM_COL_TEL));
cli.setNbpizzaencours(c.getInt(NUM_COL_PIZZAENCOURS));
cli.setNbpizzatotal(c.getInt(NUM_COL_PIZZATOTAL));
c.close();
return cli;
} |
Donc, je me suis dit que c'était comme la dernière fois, puisque j'ai rajouté cette fonction après, et que je devais donc désinstaller/réinstaller l'appli de l'émulateur, seulement l'erreur persiste :(
Comment remédier à ce problème?
Merci d'avance :)