如何同时更新两列?

时间:2017-08-10 01:53:59

标签: android sqlite listview colors

我的SQLite数据库有5列,我想更新数据。

它是第一次创建的,只有我必须更新它工作的一个列。但现在我意识到我必须更新2列。我的应用程序有一个自定义列表视图,它由这4列(id列除外)创建。

我必须更新2列。它们是第三栏和第四栏。首先,在我创建的数据库中,我必须更新我可以通过数据库中的id找到的第三列。但是现在,我试图更新第三栏和第四栏。我这样做是因为第四列是颜色的整数,我想根据第三列值更新颜色我的列表视图。

我正在寻找我的答案,但我没有找到。我怎么能解决它?

我的数据库添加方法;

recv()

我的数据库更新方法;

public boolean addData(String item , String number   ) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL2, item);
        contentValues.put(COL3 , number);
        contentValues.put(COL4, "50" ); //third column
        contentValues.put(COL5 , "#27fbf0"); // Fourth column
        Log.d(TAG, "addData: Adding " + item + " to " + TABLE_NAME);

        long result = db.insert(TABLE_NAME, null, contentValues);

        //if date as inserted incorrectly it will return -1
        if (result == -1) {
            return false;
        } else {
            return true;
        }
    }

如何使用新值将颜色设置为数据库; sonuc是新的价值。它转到COL4

  public void updateName(String newName, int id, String oldName,String newboya,String oldboya){
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "UPDATE " + TABLE_NAME + " SET " +
                COL4 + " = '" + newName +  "' AND " +
                COL5 + " = '" + newboya+  "' WHERE " +
                COL1 + " = '" + id + "'" + " AND " +
                COL4  + " = '" + oldName + " AND " +  //third column
                COL5 + " = '" + oldboya+ "'"; // Fourth column
        Log.d(TAG, "updateName: query: " + query);
        Log.d(TAG, "updateName: Setting name to " + newName);
        db.execSQL(query);
    }
How to I create my customized listview ;

    while(data.moveToNext()){

            listDataId.add(data.getString(0));

            listData.add(data.getString(1));


            listDatanumber.add(data.getString(2));

            listDataoran.add(data.getString(3));
listDataBoya.add(data.getString(4));



        }
        liste.setAdapter(oyunTextView);

    }


    class OyunTextView extends BaseAdapter {


        @Override
        public int getCount() {

            return  listData.size();
        }

        @Override
        public Object getItem(int position) {
            return listData.get(position);
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            convertView = getLayoutInflater().inflate(R.layout.oyuntextview, null);
            TextView namesbox = (TextView) convertView.findViewById(R.id.isim);
            sayılar = (TextView) convertView.findViewById(R.id.sayı);
            namesbox.setText(listData.get(position));
            sayılar.setText(listDataoran.get(position));

           convertView.setBackgroundColor(Color.parseColor(listDataBoya.get(position)));


            return convertView;
        }
    }

我的logcat:

                       sonuc = Integer.valueOf(old) + toplamaislemi;


                    if (sonuc >= 10 && sonuc < 19){ //20-10
                        boyayazı =   "#032E28" ;
                    }
                                //

                    if (sonuc <0 || sonuc ==0 ){
                        sonuc = 0;
                        boyayazı = "#121210";
   Toast.makeText(AnaMenu.this,
           "Bu kişi için en düşük orana ulaştınız.Artık bu kişi ile eşleştirilmeyeceksiniz.",
           Toast.LENGTH_LONG).show();
                    }
              int se = Integer.parseInt(listDataId.get(selec));
             String oldboya = listDataBoya.get(selec);



                 mDatabaseHelper.updateName(String.valueOf(sonuc), se, old ,boyayazı , oldboya  );

                     oyunTextView.notifyDataSetChanged();
                    Intent diger = new Intent(AnaMenu.this,AnaMenubos.class);
                    startActivity(diger);
AnaMenu.this.finish();



                }
            }  )             .show();


        }

1 个答案:

答案 0 :(得分:0)

您可以使用此代码段来更新数据库。参数是自我解释的。

public String update(String table, ContentValues data, String where, String[] whereArgs) {
    SQLiteDatabase db = getWritableDB();
    //String where = "id=?";
    //String[] whereArgs = new String[] {String.valueOf(id)};
    try {
        long returnId = db.update(table, data, where, whereArgs);
        if (returnId > 0) {
            db.close();
            return "Success";
        } else {
            db.close();
            return "fail";
        }
    } catch (Exception e) {
        String error = e.getMessage().toString();
        db.close();
        return error;
    }
}

可以像这样进行通话。 productDetailsContentValues是具有关联值的列名(在这种情况下,您要更新的值)。 &#34;其中&#34;是数据库行的指针。这里我们选择带有id的行(它应该是唯一的)。然后我们通过计算记录来检查行是否存在。如果该行存在,我们将使用表中的内容值进行更新。

ContentValues productDetailsContentValues = new ContentValues();
 productDetailsContentValues.put("barcode", aProduct.getProduct().getBarcode());
 productDetailsContentValues.put("code", aProduct.getProduct().getCode());

String where = " id = " + aProduct.getProduct().getId();
if (databaseHelper.recordCount(DatabaseInfo.DATABASE_TABLE_PRODUCT, where) > 0) {
     databaseHelper.update(DatabaseInfo.DATABASE_TABLE_PRODUCT, productDetailsContentValues, where, null);
  } else {
     long id = databaseHelper.insert(DatabaseInfo.DATABASE_TABLE_PRODUCT, productDetailsContentValues);
}