Reputation: 4300
I insert some date in my local db(sqlite).But when i want to select this data,cursor is not build xml and skip this block.I have one row in my sqlite.Do you have any idea?
This is my code:`
public void insertMessages(int msgid,String msgdesc, String date, int createdby,int to) {
SQLiteDatabase myDatabase = this.getWritableDatabase();
String query = "INSERT INTO Messages (_id,msgdesc,date,createdby,sendto) "+
" VALUES ("+msgid+",'"+msgdesc+"','"+date+"',"+createdby+","+to+")";
SQLiteStatement st = myDatabase.compileStatement(query);
try {
st.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
myDatabase.close();
Log.i("insert","insert Messages completed");
}
public String getMessages(int to) {
SQLiteDatabase myDatabase = this.getWritableDatabase();
String xml = null;
try {
String query = "SELECT _id,msgdesc,date,createdby,sendto from Messages Where sendto="+to+"";
Cursor cs = myDatabase.rawQuery(query, null);
xml = "<messagelist>";
*****if (cs.moveToFirst()) {*****
do {
xml += "<messages>";
xml += "<msgid>"+cs.getInt(cs.getColumnIndex("_id"))+"</msgid>";
xml += "<msgdesc>"+cs.getString(cs.getColumnIndex("msgdesc"))+"</msgdesc>";
xml += "<date>"+cs.getString(cs.getColumnIndex("date"))+"</date>";
xml += "<createdby>"+cs.getInt(cs.getColumnIndex("createdby"))+"</createdby>";
xml += "<to>"+cs.getInt(cs.getColumnIndex("sendto"))+"</to>";
xml += "</messages>";
} while (cs.moveToNext());
}
xml += "</messagelist>";
cs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
myDatabase.close();
Log.i("select","select completed");
return xml;
}`
Upvotes: 0
Views: 97
Reputation: 14472
"SELECT _id,msgdesc,date,createdby,sendto from Messages Where sendto="+to+"";
You must delimit string constants with single quotes. Try this
"SELECT _id,msgdesc,date,createdby,sendto from Messages Where sendto = '" + to + "'";
Even better would be to use parameterised queries.
http://sqlite.phxsoftware.com/forums/t/83.aspx
Upvotes: 1