Android Sqlite 如果不存在则插入

Posted

技术标签:

【中文标题】Android Sqlite 如果不存在则插入【英文标题】:Android Sqlite Insert if not exists 【发布时间】: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();

【问题讨论】:

***.com/questions/2779823/… 【参考方案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() 方法,以便它尝试更新,但如果没有受影响的行,它会保存(因为这意味着数据是新的)

【讨论】:

以上是关于Android Sqlite 如果不存在则插入的主要内容,如果未能解决你的问题,请参考以下文章

SQLite 中的“如果不存在则插入”语句

sqlite不存在记录则插入数据

android sqlite 如果不存在则创建表

如何检查 Android SQLite 数据库中是不是存在表?

Android SQLite用户登录不起作用

无法在 android 中使用 sqlite 添加唯一行