I want to send an json data to database part from there i want to display the data in listview,for my json part is correct,i created database also for sending json data to store in that database,but its showing logcat error,application also stopped.
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
}
This is my db part
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;
}
}
It shows logcat error
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
it shows problem in thesethree lines
mDbHelper.open(); and
@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 )" );
}
There is problem with your database table, You cant have two integer primary keys in the same table.
Remove one of the primary keys or change its type (just remove primary key from one of 'id' or 'count' column types).
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.