首页 > 解决方案 > 如何将数组值放入 dbSqlite 上的数据库?

问题描述

我的项目用于将产品信息保存到数据库中的 shoppingCart 中dbSqlite。但是,现在它应该从服务器保存产品信息。根据 Web 服务,一种变量类型是List Array. 那是String以前。其中之一是double,它String也是。我换real了,dbSqlite但我该怎么办Array?如何再次将其保存在 dbSqlite 上?

错误:没有找到适合 put(String,List) 方法的方法 ContentValues.put(String,String) 不适用

购物车.java

public class Cart {
    private List<String> Image;
    private String Title;
    private double Cost;
    private String Market;

    public List<String> getImage() {
        return Image;
    }

    public void setImage(List<String> image) {
        Image = image;
    }

    public double getCost() {
        return Cost;
    }

    public void setCost(double cost) {
        Cost = cost;
    }

    private String TotalCost;
    private String Description;

    public boolean boolExpand = false;

    boolean isExpanded;


    public boolean isExpanded() {
        return this.isExpanded;
    }

    public void setExpanded(boolean expanded) {
        this.isExpanded = expanded;
    }




    public String getTitle() {
        return Title;
    }

    public void setTitle(String title) {
        Title = title;
    }



    public String getMarket() {
        return Market;
    }

    public void setMarket(String market) {
        Market = market;
    }

    public String getTotalCost() {
        return TotalCost;
    }

    public void setTotalCost(String totalCost) {
        TotalCost = totalCost;
    }

    public String getDescription() {
        return Description;
    }

    public void setDescription(String description) {
        Description = description;
    }
}

ProductDetailAdapter.java



public class ProductDetailAdapter extends RecyclerView.Adapter<ProductDetailAdapter.ViewHolder> {
 btnProductDetail.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
                // isLogined bilgisi shared preferences'tan alınıyor. eğer true ise username ve password bilgileri alınıyor.
                // değil ise empty olarak giriliyor.
                isLogined = sharedPreferences.getBoolean("isLogined", false);
                if (isLogined) {
                    saveCartAmount();
                    db = new DatabaseHelper(mContext);
                    List<String> img;
                    double cost;
                    String title;
                    String total;
                    String market;
                    String description;
                    img = productPageList.get(position).getProductImages();
                    cost = productPageList.get(position).getProductPrices().get(position).getShopProductPrice();
                    title = productPageList.get(position).getProductName();
                    market = productPageList.get(position).getProductPrices().get(position).getShopName();
                    total = "";
                    description = productPageList.get(position).getProductDescription();
                    // Log.e("amountdb","dasdsa");
                    //  amount = amountdb++;

                    db.AddToCart(img, title, cost, market, total, description);

                    cartListener.onProductSelect(productPageList.get(position));

                    Toast.makeText(mContext, "Ürün sepetinize eklendi.", Toast.LENGTH_SHORT).show();

                }
                else{
                    Toast.makeText(mContext, "Sepete ürün eklemek için üye girişi yapmanız gerekmektedir.", Toast.LENGTH_SHORT).show();
                }
            }
        });
   }

数据库助手.java

public class DatabaseHelper extends SQLiteOpenHelper {

    public DatabaseHelper(Context context) {
        super(context, "Login.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
       db.execSQL("Create table cart(Image text, Title text, Cost real, Market text, TotalCost text, Description text)");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

      db.execSQL("drop table if exists cart");
    }

    public void deleteCart(){
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete("cart", null,null);
    }
    public void AddToCart(List<String> Image, String Title, Double Cost, String Market, String TotalCost, String Descritpion){
        SQLiteDatabase db = getWritableDatabase();
        ContentValues data = new ContentValues();

        data.put("Image",Image );
        data.put("Title",Title);
        data.put("Cost",Cost);
        data.put("Market",Market);
        data.put("TotalCost", TotalCost);
        data.put("Description", Descritpion);

        db.insert("cart",null,data);

    }

    public List<Cart> getdata(){
        // DataModel dataModel = new DataModel();
        List<Cart> data=new ArrayList<>();
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor rs =  db.rawQuery( "select * from cart",null);
        StringBuffer stringBuffer = new StringBuffer();
        Cart dataModel = null;
        while (rs.moveToNext()) {
            dataModel= new Cart();
            List<String> image = Collections.singletonList(rs.getString(rs.getColumnIndexOrThrow("Image")));
            String title = rs.getString(rs.getColumnIndexOrThrow("Title"));
            Double cost = (rs.getDouble(rs.getColumnIndexOrThrow("Cost")));
            String market = rs.getString(rs.getColumnIndexOrThrow("Market"));
            String totalCost = rs.getString(rs.getColumnIndexOrThrow("TotalCost"));
            String description = rs.getString(rs.getColumnIndexOrThrow("Description"));

            dataModel.setImage(image);
            dataModel.setTitle(title);
            dataModel.setCost(cost);
            dataModel.setMarket(market);
            dataModel.setTotalCost(totalCost);
            dataModel.setDescription(description);
            stringBuffer.append(dataModel);
            data.add(dataModel);
        }

        return data;
    }
}

标签: javaandroidandroid-sqlite

解决方案


您可以像这样读取数组:

String[] myArray = `put your array here`
for (int i = 0; i < myArray.size(); i++)
{
 //Here u insert the data by getting what u need from the array
 data.put("Cost",myArray.get(i).Cost);
}

推荐阅读