بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل با پروژه ی ( Android Market ( Local Database
سلام دوستان ، کدها رو مطابق فیلم نوشتم کاملا اجرا می شد برام تا وقتی که خواستم توی لیست ویو باتن های مربوط به فیلتر کردن و سورت کردن رو اضافه کنم . وقتی کدهای مربوطش رو اضافه کردم برنامه crash کرد و علت اصلی رو هم گفته که مربوط میشه به دستور SQL ای که در پارامتر ورودی متد populateFromDatabase تعریف کردم . چه جوری باید باشه مگه ؟ ممنون از همگیییییییییییییی.
package project;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import com.example.n5110.androidmarket.R;
import java.util.ArrayList;
public class ActivityApplicationsList extends ActivityEnhanced {
private ListView list;
private AdapterApplication adapter;
private ArrayList<StructApplication> applications = new ArrayList<StructApplication>();
private Button btn_all;
private Button btn_free;
private Button btn_paid;
private Button btn_rate;
private Button btn_price;
private Button btn_installs;
private String lastSort = "app ratingValue DESC";
private String lastFilter = "1=1";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_applications_list);
list = (ListView)findViewById(R.id.list);
btn_all = (Button)findViewById(R.id.btn_all);
btn_free = (Button)findViewById(R.id.btn_free);
btn_paid = (Button)findViewById(R.id.btn_paid);
btn_rate = (Button)findViewById(R.id.btn_rate);
btn_price = (Button)findViewById(R.id.btn_price);
btn_installs = (Button)findViewById(R.id.btn_installs);
btn_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lastFilter = "1=1";
populateFromDatabase();
}
});
btn_free.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lastFilter = "app_price = 0";
populateFromDatabase();
}
});
btn_paid.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lastFilter = "app_price > 0";
populateFromDatabase();
}
});
btn_rate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lastSort = "app_ratingValue DESC";
populateFromDatabase();
}
});
btn_price.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lastSort = "app_price ASC";
populateFromDatabase();
}
});
btn_installs.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lastSort = "app_installs DESC";
populateFromDatabase();
}
});
adapter = new AdapterApplication(this, applications);
list.setAdapter(adapter);
populateFromDatabase();
}
private void populateFromDatabase(){
applications.clear();
Cursor cursor = G.database.rawQuery("SELECT * FROM app WHERE " + lastFilter + " ORDER BY " + lastSort, null);
while (cursor.moveToNext()){
applications.add(new StructApplication(cursor.getString(cursor.getColumnIndex("app_name")) ,
cursor.getInt(cursor.getColumnIndex("app_price")),
"",
cursor.getFloat(cursor.getColumnIndex("app_ratingValue")),
cursor.getString(cursor.getColumnIndex("app_author")) ,
cursor.getInt(cursor.getColumnIndex("app_votes")),
cursor.getLong(cursor.getColumnIndex("app_fileSize")),
cursor.getString(cursor.getColumnIndex("app_versionName")),
cursor.getInt(cursor.getColumnIndex("app_installs")),
cursor.getString(cursor.getColumnIndex("app_description")),
cursor.getString(cursor.getColumnIndex("app_phoneNumber")),
cursor.getString(cursor.getColumnIndex("app_email"))
));
}
cursor.close();
adapter.notifyDataSetChanged();
}
}
// Errors :
10332-10332/com.example.n5110.androidmarket E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.n5110.androidmarket, PID: 10332
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.n5110.androidmarket
/project.ActivityApplicationsList}: android.database.sqlite.SQLiteException:
near "ratingValue": syntax error (code 1): , while compiling:
SELECT * FROM app WHERE 1=1 ORDER BY app ratingValue DESC
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: android.database.sqlite.SQLiteException: near "ratingValue": syntax error (code 1): , while compiling: SELECT * FROM app WHERE 1=1 ORDER BY app ratingValue DESC
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
at project.ActivityApplicationsList.populateFromDatabase(ActivityApplicationsList.java:100)
at project.ActivityApplicationsList.onCreate(ActivityApplicationsList.java:95)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
برای این سوال 1 پاسخ وجود دارد.
مشاهده پاسخ صحیح

پاسخ به سوال
MarAnd
8 سال پیش
+1
0
پاسخ صحیح
امان از این syntax erros !! اصلا این کلمه رو ندیدم !. مشکل در تایپ اشتباه variable بود .
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .