簡體   English   中英

我的代碼未在數據庫中寫入任何內容

[英]My code doesn't write anything in the database

我需要為每個項目在database寫入三個值,之后,我需要從SQLite數據庫中檢索數據以在購物車中顯示項目,但是當我嘗試在數據庫中不寫入任何內容時,檢索我得到的只是一個空項目,只有沒有值的布局

我真的不知道如何使用SQLite ,我希望我的代碼是正確的

這是onBindViewHolder,我將數據寫入database

   @Override
        protected void onBindViewHolder(@NonNull FragmentUnuViewHolder fragmentUnuViewHolder, int i, @NonNull final FragmentUnuModel fragmentUnuModel) {

            fragmentUnuViewHolder.denumire.setText(fragmentUnuModel.getDenumire());
            fragmentUnuViewHolder.descriere.setText(fragmentUnuModel.getDescriere());
            fragmentUnuViewHolder.pret.setText(Integer.toString(fragmentUnuModel.getPret())+" RON");

            Picasso.with(getActivity().getBaseContext()).load(fragmentUnuModel.getImagine()).into(fragmentUnuViewHolder.img);
            fragmentItem.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    new Database(getActivity().getBaseContext()).addToCart(new OrderModel(

                            fragmentUnuModel.getDenumire(),
                            fragmentUnuModel.getDescriere(),
                            fragmentUnuModel.getPret()

                    ));
                    Toast.makeText(getActivity(),"Added to Cart "+fragmentUnuModel.getDenumire(),Toast.LENGTH_LONG).show();
                }
            });
        }

這是Cart.java

  public class Cart extends AppCompatActivity {

RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;

FirebaseDatabase database;
DatabaseReference request;
TextView txtTotalPrice;

List<OrderModel> cart = new ArrayList<>();

CartAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cart);

    //Firebase
    database = FirebaseDatabase.getInstance();
    request = database.getReference("Comanda");

    //Init
    recyclerView = (RecyclerView)findViewById(R.id.listCart);
    recyclerView.setHasFixedSize(true);
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);

    txtTotalPrice = (TextView)findViewById(R.id.total);

    loadListFood();
}

private void loadListFood() {

    cart = new Database(this).getCarts();
    adapter = new CartAdapter(cart,this);
    recyclerView.setAdapter(adapter);

    //Calc TOTAL PRICE
    int total = 0;
    for(OrderModel order:cart)
        total+=(Integer.parseInt(String.valueOf(order.getPret()))); /* *(Integer.parseInt(order.getQuantity())); */
    Locale locale = new Locale("en","EU");
    NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);

    txtTotalPrice.setText(fmt.format(total));
}

這是CartAdapter.java

 public class CartAdapter extends RecyclerView.Adapter<CartViewHolder> {

private List<OrderModel> listData = new ArrayList<>();
private Context context;

public CartAdapter(List<OrderModel> listData, Context context) {
    this.listData = listData;
    this.context = context;
}

@Override
public CartViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(context);
    View itemView = inflater.inflate(R.layout.cart_layout, parent, false);
    return new CartViewHolder(itemView);
}

@Override
public void onBindViewHolder(CartViewHolder holder, int position) {
   /* TextDrawable drawable = TextDrawable.builder().buildRound("" + listData.get(position).getQuantity(), Color.RED);
    holder.img_cart_count.setImageDrawable(drawable);
 */
    String price = (Integer.parseInt(String.valueOf(listData.get(position).getPret()))) + " RON" ; /* * (Integer.parseInt(listData.get(position).getQuantity())); */
    holder.txt_price.setText((price));
    holder.txt_cart_name.setText(listData.get(position).getDenumireProdus());

這是帶有getter和setter的列表OrderModel.java

 public class OrderModel {

private String DenumireProdus;
private String Cantitate;
private int Pret;


public OrderModel(String denumireProdus, String cantitate, int pret) {
    DenumireProdus = denumireProdus;
    Cantitate = cantitate;
    Pret = pret;
}

public OrderModel(String denumireProdus, String cantitate, String pret) {
}

public String getDenumireProdus() {
    return DenumireProdus;
}

public void setDenumireProdus(String denumireProdus) {
    DenumireProdus = denumireProdus;
}

public String getCantitate() {
    return Cantitate;
}

public void setCantitate(String cantitate) {
    Cantitate = cantitate;
}

public int getPret() {
    return Pret;
}

public void setPret(int pret) {
    Pret = pret;
}

我確實需要幫助,我處於死胡同,我不想重寫所有程序。

我希望在數據庫中寫一些東西,但是它根本不寫任何東西。 但是,當我單擊該項目時,敬酒詞恰好表示該項目,我認為某個地方的連接不好。

數據庫類

  public class Database extends SQLiteAssetHelper {
private static String DB_NAME="OrderMeDB.db";
private static int DB_VER=1;

public Database(Context context) {
    super(context, DB_NAME,null,DB_VER );
}

public List<OrderModel> getCarts()
{
    SQLiteDatabase db = getReadableDatabase();
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

    String[] sqlSelect = {"DenumireProdus" , "Cantitate" , "Pret"};
    String sqlTable = "Comanda";

    qb.setTables(sqlTable);
    Cursor c = qb.query(db , sqlSelect , null,null,null,null,null);

    final List<OrderModel> result = new ArrayList<>();
    if(c.moveToFirst())
    {
        do{
            result.add(new OrderModel(c.getString(c.getColumnIndex("DenumireProdus")),
                    c.getString(c.getColumnIndex("Cantitate")),
                    c.getString(c.getColumnIndex("Pret"))
            ));
        }while (c.moveToNext());
    }
    return result;
}

public void addToCart(OrderModel order)
{
    SQLiteDatabase db = getReadableDatabase();
    String query = String.format("INSERT INTO Comanda(DenumireProdus,Cantitate,Pret) VALUES('%s','%s','%s');",
            order.getDenumireProdus(),
            order.getCantitate(),
            order.getPret());
    db.execSQL(query);
}

終於想通了! 您正在嘗試寫入數據,但使用的是getReadableDatabase()方法。 嘗試使用https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html#getWritableDatabase()

編輯:其實這可能是構造函數問題!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM