【问题标题】:Android Sqlite Insert if not existsAndroid Sqlite 如果不存在则插入
【发布时间】:2014-07-04 11:51:13
【问题描述】:

在我的 android 应用程序中,我需要将数据保存到数据库中。这些值是用户名和 DOB 详细信息。因此,在保存详细信息之前,我需要检查数据是否存在。如果名字、姓氏和 dob arte 相同,则在名称中,则无需插入数据。如果有人知道,请在下面提供我的代码,请帮助。

                    EditText et1 = (EditText) findViewById (R.id.editText1);
                    EditText et2 = (EditText) findViewById (R.id.editText2);
                    EditText et3 = (EditText) findViewById (R.id.editText3);
                    EditText et4 = (EditText) findViewById (R.id.editText7);
                    EditText et5 = (EditText) findViewById (R.id.editText8);
                    EditText et6 = (EditText) findViewById (R.id.editText9);
                    EditText et7 = (EditText) findViewById (R.id.editText10);
                    EditText et8 = (EditText) findViewById (R.id.editText11);




                                String fname  = et1.getText().toString();

                                String mname  = et2.getText().toString();

                                String lname  = et3.getText().toString();

                                String bday   = et4.getText().toString();

                                String bmonth = et5.getText().toString();

                                String byear  = et6.getText().toString();

                                String mno    = et7.getText().toString();

                                String pem    = et8.getText().toString();

db.execSQL("INSERT INTO Data2 VALUES('"+fname+"', '"+mname+"','"+lname+"','"+bday+"', '"+bmonth+"','"+byear+"', '"+mno+"', '"+pem+"');");

                                  Toast.makeText(NumEntry.this, "Your details are successfully saved.", Toast.LENGTH_LONG).show();

【问题讨论】:

标签: android mysql database


【解决方案1】:

检查数据库中是否已经存在行,并根据此更新或插入您的数据:

 public Long saveUser(Some values) {
            long rowId;
            String sql = "SELECT * FROM Data2 WHERE COLUMN_1 = ? AND COLUMN_2 = ?";
            Cursor cursor = getSqLiteDatabase().rawQuery(sql, new String[]{"column_value_1" ,"column_value_2"});
            if (cursor == null || !cursor.moveToFirst()) {
                //Insert new
                rowId = getSqLiteDatabase().insert(Data2, null, yourCV);
            } else {
                //Update
                String clause = "COLUMN_1 = ? AND COLUMN_2 = ?";
                String args[] = {"column_value_1" ,"column_value_2"};
                rowId = getSqLiteDatabase().update(User.DB_KEYS.TABLE.toString(), UserSqlStorage.saveUserCV(user), clause, args);
            }
            closeCursor(cursor);
            return rowId;
        }

【讨论】:

    【解决方案2】:

    您可以使用以下方法..

    Cursor cursor = db.rawQuery("select id from tblUniqueNumber  WHERE fname = " + fname + " &&     lname =" + lname + " && DOB = "  + DOB, null);
    
    if(cursor.moveToFirst())
    {
    
    } else {
      // insert
    }
    

    【讨论】:

      【解决方案3】:

      我总是创建一个saveOrUpdate() 方法,以便它尝试更新,但如果没有受影响的行,它会保存(因为这意味着数据是新的)

      【讨论】:

        猜你喜欢
        • 2021-10-14
        • 2011-01-13
        • 2015-03-31
        • 1970-01-01
        • 2012-03-28
        • 1970-01-01
        • 2012-03-14
        • 2013-10-20
        相关资源
        最近更新 更多