2013-07-04 10 views
0

我想從那裏發送一個JSON數據到數據庫部分我想在列表視圖中顯示數據,爲我的JSON部分是正確的,我創建數據庫也用於發送JSON數據要存儲在那個數據庫中,但是它顯示的logcat錯誤,應用程序也停止了。插入JSON數據到數據庫並顯示在列表視圖使logcat錯誤

public class MainActivity extends Activity implements FetchDataListener,OnClickListener{ 
    private static final int ACTIVITY_CREATE=0; 
    private static final int TAG_CATEGORY = 0; 
    private static final String CATEGORY_COLUMN_ID = "id"; 
    private static final String CATEGORY_COLUMN_TITLE = "title"; 
    private static final String CATEGORY_COLUMN_CONTENT = "content"; 
    private static final String CATEGORY_COLUMN_COUNT = "count"; 
    private static final int Application = 0; 
    private ProgressDialog dialog; 
    ListView lv; 
    ListView lv1; 
    private List<Application> items; 
    private Button btnGetSelected; 
    private Button praycount; 
    public int pct; 
    private String stringVal; 
    private TextView value; 
    private int prayers; 
    private int prayerid; 
    EditText myFilter; 
    ApplicationAdapter adapter; 
    private GinfyDbAdapter mDbHelper; 
    JSONArray contacts = null; 
     private SimpleCursorAdapter dataAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_list_item); 
     mDbHelper=new GinfyDbAdapter(MainActivity.this); 
     mDbHelper.open(); 
     fillData(); 
     registerForContextMenu(getListView()); 
     //mDbHelper.saveCategoryRecord(new Category(id,title,content,count)); 

     lv1 =(ListView)findViewById(R.id.list); 
     lv =(ListView)findViewById(R.id.list); 



     btnGetSelected = (Button) findViewById(R.id.btnget); 
     btnGetSelected.setOnClickListener(this); 

     myFilter = (EditText) findViewById(R.id.myFilter); 


     // Adding items to listview 


     /** 
     * Enabling Search Filter 
     * */ 




     new GetDataAsyncTask().execute(); 
     //praycount.setOnClickListener(this); 
     //initView(); 
    } 

    private View getListView() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    /*private void initView(){ 
     // show progress dialog 
     dialog = ProgressDialog.show(this, "", "Loading..."); 
     String url = "http://www.ginfy.com/api/v1/posts.json"; 
     FetchDataTask task = new FetchDataTask(this); 
     task.execute(url); 


    } */ 

    private class GetDataAsyncTask extends AsyncTask<Void, Void, Boolean> { 
     private ProgressDialog Dialog = new ProgressDialog(MainActivity.this); 

     protected void onPreExecute() { 
      Dialog.setMessage("Loading....."); 
      Dialog.show(); 
     } 
     @Override 
     protected void onPostExecute(Boolean result) { 
      super.onPostExecute(result); 
      Dialog.dismiss(); 
      Intent intent = new Intent(MainActivity.this, MainActivity.class); 
      startActivity(intent); 
     } 
     @Override 
     protected Boolean doInBackground(Void... params) { 
      getProdData(); 
      return null; 
     } 
    } 

    public void getProdData() { 
     // getting JSON string from URL 
     JSONParser jsonObject = new JSONParser(); 
     //JSONObject jsonObject = new JSONObject(); 
      //JSONArray aJson = jsonObject.getJSONArray("post"); 
      String url = "http://www.ginfy.com/api/v1/posts.json"; 
      // getting JSON string from URL 
      //JSONArray aJson = jsonObject.getJSONArray(url); 
      JSONArray Json = jsonObject.getJSONFromUrl(url); 

      try { 
       // Getting Array of Contacts 
       contacts = Json.getJSONArray(TAG_CATEGORY); 

       // looping through All Contacts 
       for(int i = 0; i < contacts.length(); i++){ 
        JSONObject c = contacts.getJSONObject(i); 

        // Storing each json item in variable 
        String id = c.getString(CATEGORY_COLUMN_ID); 
        String title = c.getString(CATEGORY_COLUMN_TITLE); 
        String content = c.getString(CATEGORY_COLUMN_CONTENT); 
        String count = c.getString(CATEGORY_COLUMN_COUNT); 

        mDbHelper.saveCategoryRecord(new Category(id,title,content,count)); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    @SuppressLint("NewApi") 
    @SuppressWarnings("deprecation") 
    private void fillData() { 
     mDbHelper.open(); 
     Cursor projectsCursor = mDbHelper.fetchAllProjects(); 
     //startManagingCursor(projectsCursor); 

     // Create an array to specify the fields we want to display in the list (only TITLE) 
     String[] from = new String[]{GinfyDbAdapter.CATEGORY_COLUMN_TITLE, GinfyDbAdapter.CATEGORY_COLUMN_CONTENT, GinfyDbAdapter.CATEGORY_COLUMN_COUNT}; 

     // and an array of the fields we want to bind those fields to (in this case just text1) 
     int[] to = new int[]{R.id.text2, R.id.text2, R.id.count}; 

     /* Now create a simple cursor adapter and set it to display 
     SimpleCursorAdapter projects = 
       new SimpleCursorAdapter(this, R.layout.activity_row, projectsCursor, from, to); 
     setListAdapter(projects); 
     */ 
     // create the adapter using the cursor pointing to the desired data 
     //as well as the layout information 
     dataAdapter = new SimpleCursorAdapter(
      this, R.layout.activity_row, 
      projectsCursor, 
      from, 
      to, 
      0); 
     setListAdapter(dataAdapter); 




    } 



    private void setListAdapter(SimpleCursorAdapter dataAdapter2) { 
     // TODO Auto-generated method stub 

    } 

這是我的分貝部分

public class GridviewAdapter extends BaseAdapter 
{ 
    private ArrayList<String> listginfy; 
    private ArrayList<Integer> listimage; 
    private Activity activity; 

    public GridviewAdapter(GinfyActivity ginfyActivity,ArrayList<String> listginfy, ArrayList<Integer> listimage) { 
     super(); 
     this.listginfy = listginfy; 
     this.listimage = listimage; 
     this.activity = (Activity) ginfyActivity; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return listginfy.size(); 
    } 

    @Override 
    public String getItem(int position) { 
     // TODO Auto-generated method stub 
     return listginfy.get(position); 
    } 

    public int getItemId() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    public static class ViewHolder 
    { 
     public ImageView imgViewGinfy; 
     public TextView txtViewTitle; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     ViewHolder view; 
     LayoutInflater inflator = activity.getLayoutInflater(); 

     if(convertView==null) 
     { 
      view = new ViewHolder(); 
      convertView = inflator.inflate(R.layout.gridview_row, null); 

      view.txtViewTitle = (TextView) convertView.findViewById(R.id.textView1); 
      view.imgViewGinfy = (ImageView) convertView.findViewById(R.id.imageView1); 

      convertView.setTag(view); 
     } 
     else 
     { 
      view = (ViewHolder) convertView.getTag(); 
     } 

     view.txtViewTitle.setText(listginfy.get(position)); 
     view.imgViewGinfy.setImageResource(listimage.get(position)); 

     return convertView; 
    } 

    @Override 
    public long getItemId(int arg0) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 


} 

它顯示logcat的錯誤

07-04 11:01:47.825: E/SQLiteLog(1186): (1) near "prayers": syntax error 
07-04 11:01:47.855: D/AndroidRuntime(1186): Shutting down VM 
07-04 11:01:47.865: W/dalvikvm(1186): threadid=1: thread exiting with uncaught exception (group=0x40a70930) 
07-04 11:01:47.975: E/AndroidRuntime(1186): FATAL EXCEPTION: main 
07-04 11:01:47.975: E/AndroidRuntime(1186): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jsonandroid/com.example.jsonandroid.MainActivity}: android.database.sqlite.SQLiteException: near "prayers": syntax error (code 1): , while compiling: prayers 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.os.Looper.loop(Looper.java:137) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at java.lang.reflect.Method.invoke(Method.java:511) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at dalvik.system.NativeStart.main(Native Method) 
07-04 11:01:47.975: E/AndroidRuntime(1186): Caused by: android.database.sqlite.SQLiteException: near "prayers": syntax error (code 1): , while compiling: prayers 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1663) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1594) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at com.example.jsonandroid.GinfyDbAdapter$DatabaseHelper.onCreate(GinfyDbAdapter.java:63) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at com.example.jsonandroid.GinfyDbAdapter.open(GinfyDbAdapter.java:99) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at com.example.jsonandroid.MainActivity.onCreate(MainActivity.java:66) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.app.Activity.performCreate(Activity.java:5104) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
07-04 11:01:47.975: E/AndroidRuntime(1186):  ... 11 more 

它示出了在thesethree線

mDbHelper.open問題();和

@Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     db.execSQL(DATABASE_TABLE_PROJ + "(" 
       + CATEGORY_COLUMN_ID + " INTEGER PRIMARY KEY, " 
       + CATEGORY_COLUMN_TITLE + " TEXT, " + CATEGORY_COLUMN_CONTENT + " TEXT, " + CATEGORY_COLUMN_CONTENT + " INTEGER PRIMARY KEY)"); 

    } 
+0

SQLiteException:接近「祈禱者」:語法錯誤(代碼1):,編譯時:祈禱 – midhunhk

+0

@silverback這是什麼,如何解決 –

+0

是否正確創建了您的數據庫和表? – Lohit

回答

0

你的數據庫表有問題,你不能在同一個表中有兩個整數主鍵。

刪除其中一個主鍵或更改其類型(只需從'id'或'count'列類型之一刪除主鍵)。

相關問題