Android SQLite: আপডেট বিবৃতি


91

আমাকে আমার অ্যাপ্লিকেশনটিতে এসকিউএলাইট প্রয়োগ করতে হবে। আমি এই টিউটোরিয়ালটি অনুসরণ করেছি .. অ্যান্ড্রয়েড একটিতে ডেটাবেস তৈরি এবং ব্যবহার করছি

সবকিছু ঠিকঠাক চলছে। আমি 5 টি কলাম সহ 1 সারি .োকালাম। এখন আমি কেবলমাত্র 1 টি কলামের মান আপডেট করতে চাই এবং অন্যরা একই থাকবে।

টিউটোরিয়ালে একটি আপডেট পদ্ধতি আছে তবে এর জন্য সমস্ত পরামিতি প্রয়োজন, তবে আমি কেবল একটি কলাম আপডেট করতে চাই।


এই সার্ভারে অনুরোধ করা URL /index.php/articlesdatastorage/235-creating-and- using-databases-in-android-one খুঁজে পাওয়া যায় নি।
মাচাডো

উত্তর:


165

আপনি নীচের কোড ব্যবহার করতে পারেন।

String strFilter = "_id=" + Id;
ContentValues args = new ContentValues();
args.put(KEY_TITLE, title);
myDB.update("titles", args, strFilter, null);

13
আপনি এমনকি করতে পারেন: myDB.update ("শিরোনাম", আরগস, strFilter, নতুন স্ট্রিং [] {Integer.toString (ID);); আপনার যদি strFilter "_id =?" তে সেট করা থাকে ... একটি একক আইটেমটির সাথে বিরক্তিকর জিনিসটি হ'ল আপনার এখনও এটি অ্যারেতে রাখা দরকার যা এটি অসুবিধে করতে পারে। তবুও, সঠিক উত্তরটির পক্ষে ভোট দিয়েছে।
জোশেন্দো

4
@ ধীরাজ - এটি কেবল কলামটিই আপডেট করবে যা কন্টেন্টভ্যালুজ অবজেক্টে যুক্ত হয়েছে
সাইমন

4
যদি আমি ভুল না হই তবে @ জোশেন্দোর কোডে এসকিউএল ইঞ্জেকশনগুলিও প্রতিরোধ করা উচিত, এমন কিছু যা এই উত্তর বিবেচনা করে না। যেহেতু যুক্তিটি প্যারামিটার হিসাবে পাস হয় এটি অন্তর্নিহিত কোড দ্বারা পালিয়ে যায় escaped
r41n

আপনার চারপাশে কোট লাগাতে হবে Id। এর মতো কিছু:String strFilter = "_id='" + Id + "'";
গিলিয়াম

118

আপনি চেষ্টা করতে পারেন:

db.execSQL("UPDATE DB_TABLE SET YOUR_COLUMN='newValue' WHERE id=6 ");

বা

ContentValues newValues = new ContentValues();
newValues.put("YOUR_COLUMN", "newValue");

db.update("YOUR_TABLE", newValues, "id=6", null);

বা

ContentValues newValues = new ContentValues();
newValues.put("YOUR_COLUMN", "newValue");

String[] args = new String[]{"user1", "user2"};
db.update("YOUR_TABLE", newValues, "name=? OR name=?", args);

53

এটি কীভাবে করবেন তা এই টিউটোরিয়ালে রয়েছে:

    ContentValues args = new ContentValues();
    args.put(columnName, newValue);
    db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null);

ContentValuesআপডেট হওয়া কলামগুলি সেট করতে ব্যবহার করুন এবং update()আপনি যে পদ্ধতিতে নির্দিষ্ট করতে হবে তার চেয়ে সারণী এবং কেবলমাত্র আপনি যে সারিগুলি আপডেট করতে চান তা আপডেট করার মানদণ্ড।


-1। প্রশ্নটি হ'ল একটি সারিতে একক কলাম আপডেট করতে হবে, পুরো সারিটি আপডেট করার জন্য নয়। অ্যালেক্সের উত্তরটি সঠিক।
ধীররাজ ভেকাকোমা

7
ধীরজ, আপনি যতটা ইচ্ছা আরোগুলি যোগ করতে পারেন put
সাইমন রোলিন

18

আপনি সর্বদা এসকিউএল কার্যকর করতে পারেন।

update [your table] set [your column]=value

উদাহরণ স্বরূপ

update Foo set Bar=125

4
কেন একটি স্পষ্টত এসকিউএল স্টেটমেন্ট ব্যবহার করছেন, যদি এর জন্য একটি (বেশ সহজ এবং সুবিধাজনক) এপিআই থাকে?
স্টিফান

4
@ স্টেফেন: কারণ এটি স্ট্যান্ডার্ড এসকিউএলাইট নয়। ডিবি বিভিন্ন প্ল্যাটফর্মের অ্যাপ্লিকেশনগুলির মধ্যে ভাগ করা হয় তখন API খুব বেশি বিশেষভাবে
জোট বেঁধে দেয়

@ স্টেফেন এটি প্রশ্নের একমাত্র সঠিক উত্তর। ওপি একটি সারিতে একক কলাম আপডেট করতে চায়, পুরো সারিটি আপডেট করতে চায় না।
ধীররাজ ভেকাকোমা

এপিআই ব্যবহার করা এখানে আরও ভাল বাজি, আমি আশ্চর্য হয়েছি যে কোনও মধ্যবর্তী সমাধান নেই, সি লাইব্রেরি আপনাকে একটি এসকিউএল নির্ধারণ করতে দেয় ফর্ম্যাটর এবং টোকেন নির্বাহ করতে এবং সেট করতে, পরের পদক্ষেপটি সি এপি ব্যবহার করে ভেরিয়েবলগুলিকে বেঁধে রাখে এসকিউএল স্ট্রিংয়ে টোকেন, এভাবে পার্সিং ত্রুটিগুলি এবং উদ্ধৃতি সমস্যাগুলি এড়ানো ইত্যাদি ... এখানে এটি প্রায় খুব সহায়ক, এমনকি এসকিউএলের এমনকি একটি অংশও লেখেনি, সুন্দর মনে হচ্ছে না ... বরং এটি তখন একটি সংযুক্ত এসকিউএল স্ট্রিং।
ড্যানিয়েল

স্ট্রিংটিতে একক উদ্ধৃতি এবং কিছু বিশেষ অক্ষর থাকবে তখন এই পদ্ধতিটি ব্যর্থ হবে। @ নাইকের উত্তর সঠিক।
সানি

1

এসকিউএলডিটাবেস অবজেক্টটি ডাটাবেসের ক্রিয়াকলাপের উপর নির্ভর করে।

আরও তথ্য, অফিসিয়াল ওয়েবসাইট দেখুন:

https://developer.android.com/training/basics/data-storage/databases.html#UpdateDbRow

এটি ব্যাখ্যা করে যে কীভাবে এসকিউএল ডাটাবেসে পরামর্শগুলি পরিচালনা করতে হবে।

সন্নিবেশ সারি

লেখার মোডে ডেটা সংগ্রহস্থল পান

SQLiteDatabase db = mDbHelper.getWritableDatabase();

মানগুলির একটি নতুন মানচিত্র তৈরি করুন, যেখানে কলামের নামগুলি কী

ContentValues values = new ContentValues();
values.put(FeedEntry.COLUMN_NAME_ENTRY_ID, id);
values.put(FeedEntry.COLUMN_NAME_TITLE, title);
values.put(FeedEntry.COLUMN_NAME_CONTENT, content);

নতুন সারিটির প্রাথমিক কী মানটি ফিরিয়ে নতুন সারিটি sertোকান

long newRowId;
newRowId = db.insert(
     FeedEntry.TABLE_NAME,
     FeedEntry.COLUMN_NAME_NULLABLE,
     values);

আপডেট আপডেট

কোয়েরির 'কোথায়' অংশটি সংজ্ঞায়িত করুন।

String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + " LIKE ?";

স্থানধারক ক্রমে যুক্তি উল্লেখ করুন।

String[] selectionArgs = { String.valueOf(rowId) };


SQLiteDatabase db = mDbHelper.getReadableDatabase();

একটি কলামের জন্য নতুন মান

ContentValues values = new ContentValues();
values.put(FeedEntry.COLUMN_NAME_TITLE, title);

আইডির উপর ভিত্তি করে কোন সারিটি আপডেট করতে হবে

String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + " LIKE ?";
String[] selectionArgs = { String.valueOf(rowId) };
    int count = db.update(
    FeedReaderDbHelper.FeedEntry.TABLE_NAME,
    values,
    selection,
    selectionArgs);

যদিও লিঙ্কযুক্ত ওয়েবসাইটে প্রশ্নের উত্তর থাকতে পারে তবে আপনার উত্তর অসম্পূর্ণ বলে মনে হচ্ছে। লিঙ্কগুলির মেয়াদ শেষ হতে পারে বা অন্যভাবে ভেঙে যেতে পারে। আপনার উত্তরের সাথে লিঙ্কযুক্ত ওয়েবসাইট থেকে প্রাসঙ্গিক কোড / তথ্য যুক্ত করুন।
মাইক 22

অবশ্যই আমি বুঝতে পেরেছি, আমি কেবল আক্ষরিক অর্থে সমাধানটি রেখেছিলাম যেটি আমার পক্ষে এবং অবশ্যই আমি যেখানে পেয়েছি তার কথিত উত্সের জন্য
গুস্তাভো এডুয়ার্ডো বেলডুমা

1

আমি এই ক্লাসটি ডেটাবেস হ্যান্ডেল করতে ব্যবহার করি I আমি আশা করি এটি ভবিষ্যতে কাউকে সহায়তা করবে।

শুভ কোডিং।

public class Database {

private static class DBHelper extends SQLiteOpenHelper {

    /**
     * Database name
     */
    private static final String DB_NAME = "db_name";

    /**
     * Table Names
     */
    public static final String TABLE_CART = "DB_CART";


    /**
     *  Cart Table Columns
     */
    public static final String CART_ID_PK = "_id";// Primary key

    public static final String CART_DISH_NAME = "dish_name";
    public static final String CART_DISH_ID = "menu_item_id";
    public static final String CART_DISH_QTY = "dish_qty";
    public static final String CART_DISH_PRICE = "dish_price";

    /**
     * String to create reservation tabs table
     */
    private final String CREATE_TABLE_CART = "CREATE TABLE IF NOT EXISTS "
            + TABLE_CART + " ( "
            + CART_ID_PK + " INTEGER PRIMARY KEY, "
            + CART_DISH_NAME + " TEXT , "
            + CART_DISH_ID + " TEXT , "
            + CART_DISH_QTY + " TEXT , "
            + CART_DISH_PRICE + " TEXT);";


    public DBHelper(Context context) {
        super(context, DB_NAME, null, 2);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_CART);


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
        db.execSQL("DROP TABLE IF EXISTS " + CREATE_TABLE_CART);
        onCreate(db);
    }

}


     /**
      * CART handler
      */
      public static class Cart {


    /**
     * Check if Cart is available or not
     *
     * @param context
     * @return
     */
    public static boolean isCartAvailable(Context context) {

        DBHelper dbHelper = new DBHelper(context);
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        boolean exists = false;

        try {
            String query = "SELECT * FROM " + DBHelper.TABLE_CART;
            Cursor cursor = db.rawQuery(query, null);
            exists = (cursor.getCount() > 0);
            cursor.close();
            db.close();
        } catch (SQLiteException e) {
            db.close();
        }

        return exists;
    }


    /**
     * Insert values in cart table
     *
     * @param context
     * @param dishName
     * @param dishPrice
     * @param dishQty
     * @return
     */
    public static boolean insertItem(Context context, String itemId, String dishName, String dishPrice, String dishQty) {

        DBHelper dbHelper = new DBHelper(context);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(DBHelper.CART_DISH_ID, "" + itemId);
        values.put(DBHelper.CART_DISH_NAME, "" + dishName);
        values.put(DBHelper.CART_DISH_PRICE, "" + dishPrice);
        values.put(DBHelper.CART_DISH_QTY, "" + dishQty);

        try {
            db.insert(DBHelper.TABLE_CART, null, values);
            db.close();
            return true;
        } catch (SQLiteException e) {
            db.close();
            return false;
        }
    }

    /**
     * Check for specific record by name
     *
     * @param context
     * @param dishName
     * @return
     */
    public static boolean isItemAvailable(Context context, String dishName) {

        DBHelper dbHelper = new DBHelper(context);
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        boolean exists = false;

        String query = "SELECT * FROM " + DBHelper.TABLE_CART + " WHERE "
                + DBHelper.CART_DISH_NAME + " = '" + String.valueOf(dishName) + "'";


        try {
            Cursor cursor = db.rawQuery(query, null);

            exists = (cursor.getCount() > 0);
            cursor.close();

        } catch (SQLiteException e) {

            e.printStackTrace();
            db.close();

        }

        return exists;
    }

    /**
     * Update cart item by item name
     *
     * @param context
     * @param dishName
     * @param dishPrice
     * @param dishQty
     * @return
     */
    public static boolean updateItem(Context context, String itemId, String dishName, String dishPrice, String dishQty) {

        DBHelper dbHelper = new DBHelper(context);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(DBHelper.CART_DISH_ID, itemId);
        values.put(DBHelper.CART_DISH_NAME, dishName);
        values.put(DBHelper.CART_DISH_PRICE, dishPrice);
        values.put(DBHelper.CART_DISH_QTY, dishQty);

        try {

            String[] args = new String[]{dishName};
            db.update(DBHelper.TABLE_CART, values, DBHelper.CART_DISH_NAME + "=?", args);

            db.close();


            return true;
        } catch (SQLiteException e) {
            db.close();

            return false;
        }
    }

    /**
     * Get cart list
     *
     * @param context
     * @return
     */
    public static ArrayList<CartModel> getCartList(Context context) {

        DBHelper dbHelper = new DBHelper(context);
        SQLiteDatabase db = dbHelper.getReadableDatabase();

        ArrayList<CartModel> cartList = new ArrayList<>();

        try {
            String query = "SELECT * FROM " + DBHelper.TABLE_CART + ";";

            Cursor cursor = db.rawQuery(query, null);


            for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {

                cartList.add(new CartModel(
                        cursor.getString(cursor.getColumnIndex(DBHelper.CART_DISH_ID)),
                        cursor.getString(cursor.getColumnIndex(DBHelper.CART_DISH_NAME)),
                        cursor.getString(cursor.getColumnIndex(DBHelper.CART_DISH_QTY)),
                        Integer.parseInt(cursor.getString(cursor.getColumnIndex(DBHelper.CART_DISH_PRICE)))
                ));
            }

            db.close();

        } catch (SQLiteException e) {
            db.close();
        }
        return cartList;
    }

   /**
     * Get total amount of cart items
     *
     * @param context
     * @return
     */
    public static String getTotalAmount(Context context) {

        DBHelper dbHelper = new DBHelper(context);
        SQLiteDatabase db = dbHelper.getReadableDatabase();

        double totalAmount = 0.0;

        try {
            String query = "SELECT * FROM " + DBHelper.TABLE_CART + ";";

            Cursor cursor = db.rawQuery(query, null);


            for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {

                totalAmount = totalAmount + Double.parseDouble(cursor.getString(cursor.getColumnIndex(DBHelper.CART_DISH_PRICE))) *
                        Double.parseDouble(cursor.getString(cursor.getColumnIndex(DBHelper.CART_DISH_QTY)));
            }

            db.close();


        } catch (SQLiteException e) {
            db.close();
        }


        if (totalAmount == 0.0)
            return "";
        else
            return "" + totalAmount;
    }


    /**
     * Get item quantity
     *
     * @param context
     * @param dishName
     * @return
     */
    public static String getItemQty(Context context, String dishName) {

        DBHelper dbHelper = new DBHelper(context);
        SQLiteDatabase db = dbHelper.getReadableDatabase();

        Cursor cursor = null;
        String query = "SELECT * FROM " + DBHelper.TABLE_CART + " WHERE " + DBHelper.CART_DISH_NAME + " = '" + dishName + "';";
        String quantity = "0";

        try {
            cursor = db.rawQuery(query, null);

            if (cursor.getCount() > 0) {

                cursor.moveToFirst();
                quantity = cursor.getString(cursor
                        .getColumnIndex(DBHelper.CART_DISH_QTY));

                return quantity;
            }


        } catch (SQLiteException e) {
            e.printStackTrace();
        }

        return quantity;
    }


    /**
     * Delete cart item by name
     *
     * @param context
     * @param dishName
     */
    public static void deleteCartItem(Context context, String dishName) {
        DBHelper dbHelper = new DBHelper(context);
        SQLiteDatabase db = dbHelper.getReadableDatabase();

        try {

            String[] args = new String[]{dishName};
            db.delete(DBHelper.TABLE_CART, DBHelper.CART_DISH_NAME + "=?", args);

            db.close();
        } catch (SQLiteException e) {
            db.close();
            e.printStackTrace();
        }

    }


}//End of cart class

/**
 * Delete database table
 *
 * @param context
 */
public static void deleteCart(Context context) {
    DBHelper dbHelper = new DBHelper(context);
    SQLiteDatabase db = dbHelper.getReadableDatabase();

    try {

        db.execSQL("DELETE FROM " + DBHelper.TABLE_CART);

    } catch (SQLiteException e) {
        e.printStackTrace();
    }

}

}

ব্যবহার:

  if(Database.Cart.isCartAvailable(context)){

       Database.deleteCart(context);

   }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.