Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中使用singleton类将多个值解析到数据库?_Android_Json_Database_Sqlite_Singleton - Fatal编程技术网

如何在android中使用singleton类将多个值解析到数据库?

如何在android中使用singleton类将多个值解析到数据库?,android,json,database,sqlite,singleton,Android,Json,Database,Sqlite,Singleton,我正在构建一个android应用程序,其中所有的值都是 使用截取以json数据的形式从URL解析到我的应用程序。现在我 要将此解析值存储到本地数据库中 我尝试使用singleton类将值存储在数据库中。 现在我面临的问题是,只有最后一个值 解析为singleton类的set函数,插入到我的 本地数据库,但其余值不是。我正在插入 单击按钮即可将值添加到我的数据库中 这是我的代码,我正在解析URL中的值并将其设置为 独生子女班- package tabsswipe; public class Fra

我正在构建一个android应用程序,其中所有的值都是 使用截取以json数据的形式从URL解析到我的应用程序。现在我 要将此解析值存储到本地数据库中

我尝试使用singleton类将值存储在数据库中。 现在我面临的问题是,只有最后一个值 解析为singleton类的set函数,插入到我的 本地数据库,但其余值不是。我正在插入 单击按钮即可将值添加到我的数据库中

这是我的代码,我正在解析URL中的值并将其设置为 独生子女班-

package tabsswipe;
public class FragmentPlay extends Fragment {

private static final String TAG = FragmentPlayo.class.getSimpleName();

// Movies json url
private static final String url = "http://URL/api/user/_id/host";
private ProgressDialog pDialog;
private List<Sigleton_class> movieList = new ArrayList<Sigleton_class>();
private ListView listView;
private CustomListAdapter adapter;
DatabaseHelper dbh;
public static ArrayList<String> array;
ImageView hostbtn;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {


    final View rootView = inflater.inflate(R.layout.fragment_play,
            container, false);


    return rootView;
}

@Override
public void onStart() {
    // TODO Auto-generated method stub
    super.onStart();

    // Creating volley request obj
    JsonArrayRequest movieReq = new JsonArrayRequest(url,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    Log.d(TAG, response.toString());
                    hidePDialog();

                    // Parsing json
                    for (int i = 0; i < response.length(); i++) {
                        try {

                            JSONObject obj = response.getJSONObject(i);
                            Sigleton_class movie = new Sigleton_class();
                            movie.setTitle(obj.getString("venue"));
                            movie.setGender(obj.getString("gender"));
                            movie.setAddinfo(obj.getString("addinfo"));

                            // adding movie to movies array
                            movieList.add(movie);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }

                    // notifying list adapter about data changes
                    // so that it renders the list view with updated data
                    adapter.notifyDataSetChanged();
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    hidePDialog();

                }
            });

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(movieReq);

}

@Override
public void onDestroy() {
    super.onDestroy();
    hidePDialog();
}

private void hidePDialog() {
    if (pDialog != null) {
        pDialog.dismiss();
        pDialog = null;
    }
}
}
这是我的datahelper类

package com.example.mydatabase;
导入android.util.Log;
公共类数据库助手{
sqlitedb数据库;
DbHelper-DbHelper;
//语境;
公共静态最终字符串DB_NAME=“contact”;
公共静态最终整数DB_VER=4;
公共静态最终字符串TBL_NAME=“info”;
公共静态最终字符串COL_ID=“_ID”;
公共静态最终字符串COL_EMAIL=“EMAIL”;
公共静态最终字符串COL_PWORD=“password”;
公共静态最终字符串COL_MOBILE=“MOBILE”;
String[]allColumns={COL_ID,COL_EMAIL,COL_PWORD,COL_MOBILE};
公共数据库助手(上下文)
{
dbHelper=新的dbHelper(上下文);
db=dbHelper.getWritableDatabase();
}
公共无效添加数据(列表mov){
(西格尔顿级电影:mov){
ContentValues=新的ContentValues();
value.put(COL_EMAIL,movie.getTitle());
value.put(COL_PWORD,movie.getDate());//获取名称
value.put(COL_MOBILE,movie.getAddinfo());//获取电话号码
//插入触点
db.插入(待定名称、列ID、值);
}
db.close();
}
公共长地址(字符串电子邮件、字符串密码、字符串移动)
{
长i=0;
ContentValues cv=新的ContentValues();
简历(COL_电子邮件、电子邮件);
cv.put(COL_PWORD,PWORD);
cv.put(COL_MOBILE,MOBILE);
i=数据库插入(待定名称、列ID、cv);
返回i;
}
公共游标getRec(字符串strMail)
{
游标cur=null;
如果((strMail==null)和(&(strMail.length()==0))
{
cur=db.query(TBL_名称,所有列,null,null,null,null,null);
//“如“'+name+“%””,
}
其他的
{
字符串sel[]={strMail+“%”字符集“%”;
//cur=db.query(TBL_名称,所有列,
//COL_EMAIL+“like'”+strMail+“%”,null,null,null,null);
cur=db.query(待定名称、所有列、列电子邮件+“like”、sel、,
空,空,空);
}   
返回电流;
}
公共长更新(int-id、String-email、String-pw、String-mob)
{
长i=0;
ContentValues cv=新的ContentValues();
简历(COL_电子邮件、电子邮件);
cv.put(COL_PWORD,pw);
个人简历(COL_MOBILE,mob);
i=db.update(TBL_NAME,cv,COL_ID+“=?”,新字符串[]{String.valueOf(ID)});
返回i;
}
公共长deleteRec(int-id)
{
长i=0;
i=db.delete(TBL_NAME,COL_ID+“=?”,新字符串[]{String.valueOf(ID)});
返回i;
}
公共游标fetchAllRec()
{
db=dbHelper.getReadableDatabase();
游标cur=null;
cur=db.query(TBL_名称,所有列,null,null,null,null,null);
如果(cur!=null)
{
cur.moveToFirst();
}   
返回电流;
}
公共类DbHelper扩展了SQLiteOpenHelper
{
公共DbHelper(上下文)
{
super(上下文、数据库名称、null、数据库版本);
//TODO自动生成的构造函数存根
}
@凌驾
public void onCreate(SQLiteDatabase db){
//TODO自动生成的方法存根
String createSql=“create table”+TBL\u NAME+”(“+COL\u ID+
整数主键自动递增+
COL_电子邮件+“文本(50),”+COL_PWORD+“文本(40),”
+COL_MOBILE+“文本(50))”;
Log.d(“创建”,createSql);
execSQL(createSql);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
//TODO自动生成的方法存根
db.execSQL(“如果存在删除表”+TBL_NAME);
onCreate(db);
}       
}   
}

试着把你的问题和网络操作总结在一起——这总是个坏主意。使用服务或异步任务。@yaa110我已经更新了我的问题,你能帮我吗now@brummfondel好的,我将使用asynctask。请你帮我解决这个问题有很多问题,例如dbh没有初始化,addData()没有被调用(这可能会填充数据库),addData()关闭数据库进行所有其他调用,等等。请提供你得到的错误,这样我们就可以开始解决你遇到的问题(除此之外,你稍后会得到…对不起)。
package volley_signleton_pck;

import java.util.ArrayList;

public class Sigleton_class {
private static String title;
private String thumbnailUrl;
private static String gender;
private String recurring;
private static String addinfo;
private String players;
private String date;
private String venue;
private String time;
private String sportname;
private int year;
private double rating;
private ArrayList<String> genre;


public Sigleton_class() {
}

public Sigleton_class(String name, String thumbnailUrl, int year, double rating,String 
gender,String recurring,String addinfo,
        String player,String date,String venue,String time,String sportname,
        ArrayList<String> genre) {
    this.title = name;
    this.thumbnailUrl = thumbnailUrl;
    this.year = year;
    this.rating = rating;
    this.genre = genre;
    this.gender = gender;
    this.recurring = recurring;
    this.addinfo = addinfo;
    this.players = player;
    this.date = date;
    this.venue = venue;
    this.time = time;
    this.sportname = sportname;
}

public static String getTitle() {
    return title;
}

public void setTitle(String name) {
    this.title = name;
}

public String getThumbnailUrl() {
    return thumbnailUrl;
}

public void setThumbnailUrl(String thumbnailUrl) {
    this.thumbnailUrl = thumbnailUrl;
}

public int getYear() {
    return year;
}

public void setYear(int year) {
    this.year = year;
}

public double getRating() {
    return rating;
}

public void setRating(double rating) {
    this.rating = rating;
}

public ArrayList<String> getGenre() {
    return genre;
}

public void setGenre(ArrayList<String> genre) {
    this.genre = genre;
}

public static String getGender() {
    return gender;
}

public void setGender(String gender) {
    this.gender = gender;
}

public String getRecurring() {
    return recurring;
}

public void setRecurring(String recurring) {
    this.recurring = recurring;
}

public static String getAddinfo() {
    return addinfo;
}

public void setAddinfo(String addinfo) {
    this.addinfo = addinfo;
}

public String getPlayers() {
    return players;
}

public void setPlayers(String players) {
    this.players = players;
}

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}

public String getVenue() {
    return venue;
}

public void setVenue(String venue) {
    this.venue = venue;
}

public String getTime() {
    return time;
}

public void setTime(String time) {
    this.time = time;
}

public String getSportname() {
    return sportname;
}

public void setSportname(String sportname) {
    this.sportname = sportname;
}
 }
btnSave = (Button) findViewById(R.id.btnSave);
    btnSave.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            long res = dbh.addRec(Sigleton_class.getTitle(),
                    Sigleton_class.getGender(), Sigleton_class.getAddinfo());

            if (res > 0) {

                AlertDialog.Builder build = new AlertDialog.Builder(
                        MainActivity_DB.this);
                build.setTitle("Success");
                build.setMessage("Record inserted successfully");
                build.setNeutralButton("Ok",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                // TODO Auto-generated method stub

                                etMail.setText(" ");
                                etPword.setText(" ");
                                etMobile.setText(" ");
                            }
                        });
                build.show();
            }

        }
    });
package com.example.mydatabase;
import android.util.Log;

public class DatabaseHelper {
SQLiteDatabase db;
DbHelper dbHelper;
//Context mContext;
public static final String DB_NAME = "contact";
public static final int DB_VER = 4;

public static final String TBL_NAME = "info";
public static final String COL_ID = "_id";
public static final String COL_EMAIL = "email";
public static final String COL_PWORD = "password";
public static final String COL_MOBILE = "mobile";

String[] allColumns ={COL_ID, COL_EMAIL, COL_PWORD, COL_MOBILE};

public DatabaseHelper(Context context)
{

    dbHelper = new DbHelper(context);
    db = dbHelper.getWritableDatabase();

}
public void addData(List<Sigleton_class> mov) {

       for (Sigleton_class movie : mov) {
           ContentValues values = new ContentValues();
           values.put(COL_EMAIL, movie.getTitle());
           values.put(COL_PWORD, movie.getDate());//get name
           values.put(COL_MOBILE, movie.getAddinfo());//get phone number
           //insert contact
           db.insert(TBL_NAME, COL_ID, values);
       }
       db.close();
   }
public long addRec(String email, String pword, String mobile)
{
    long i=0;
    ContentValues cv = new ContentValues();
    cv.put(COL_EMAIL, email);
    cv.put(COL_PWORD, pword);
    cv.put(COL_MOBILE, mobile);

    i=db.insert(TBL_NAME, COL_ID, cv);  

    return i;

}
public Cursor getRec(String strMail)
{
    Cursor cur = null;
    if((strMail==null)&&(strMail.length()==0))
    {
        cur = db.query(TBL_NAME, allColumns, null, null,null,null, null);
        //"like '" +name+"%'", 

    }
    else
    {

     String sel[] = {strMail+"'%'"};
    //  cur= db.query(TBL_NAME, allColumns, 
        //      COL_EMAIL+ " like '"+ strMail + "%'" ,null, null, null, null);

        cur = db.query(TBL_NAME, allColumns, COL_EMAIL+ " like ", sel, 
                null,null, null);
    }   
    return cur;

}

public long updateRec(int id, String email, String pw, String mob)
{
    long i=0;
    ContentValues cv = new ContentValues();
    cv.put(COL_EMAIL, email);
    cv.put(COL_PWORD, pw);
    cv.put(COL_MOBILE, mob);
    i=db.update(TBL_NAME, cv, COL_ID+"=?", new String[]{String.valueOf(id)});


    return i;
}
public long  deleteRec(int id)
{
    long i=0;
    i=db.delete(TBL_NAME, COL_ID + "=?" , new String[]{String.valueOf(id)});

    return i;       
}
public Cursor fetchAllRec()
{
    db= dbHelper.getReadableDatabase();
    Cursor cur= null;
    cur = db.query(TBL_NAME, allColumns, null, null, null, null, null);
    if(cur != null)
    {

        cur.moveToFirst();
    }   

    return cur;
}




public class DbHelper extends SQLiteOpenHelper
{

    public DbHelper(Context context)
    {
        super(context, DB_NAME, null, DB_VER);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        String createSql = "create table " + TBL_NAME + "(" +COL_ID + 
                " INTEGER primary key autoincrement," +
                COL_EMAIL + " TEXT(50)," + COL_PWORD + " TEXT(40),"
                +COL_MOBILE + " TEXT(50))";

        Log.d("Create ", createSql);
        db.execSQL(createSql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + TBL_NAME);
        onCreate(db);
    }       
}   
}