【问题标题】:how to update rows in database from sqlite database in android如何从android中的sqlite数据库更新数据库中的行
【发布时间】:2017-11-08 06:39:42
【问题描述】:

我是 android 开发的新手。我有一个登录和注册页面,在注册活动传递到最终成功后,我通过该页面收集用户的信息,例如姓名电子邮件和手机号码,所有信息都显示出来了……我想更新 3已经从数据库中提取到最终成功活动的手机号码...在该活动中,我希望将已经提取的号码再次更新到数据库中..请帮助..提前谢谢..

我在 SQliteDBhelperclass 中的表

private static final String DATABASE_NAME = "info.db";
    private static final int DATABASE_VERSION = 1;

    public static final String TABLE_NAME = "profile";
    public static final String COLUMN_ID = "userid";
    public static final String COLUMN_FULLNAME = "fullname";
    public static final String COLUMN_EMAIL = "email";
    public static final String COLUMN_PASSWORD = "password";
    public static final String COLUMN_MOBILE = "mobile";
    public static final String COLUMN_RELATIVE_MOBILE = "mobile2";
    public static final String COLUMN_RELATIVE_MOBILE3 = "mobile3";
    public static final String COLUMN_RELATIVE_MOBILE4 = "mobile4";
    public static final String COLUMN_ADDRESS = "address";

    private static final String CREATE_TABLE_QUERY =
            "CREATE TABLE " + TABLE_NAME + " (" +
                    COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                    COLUMN_FULLNAME + " TEXT, " +
                    COLUMN_EMAIL + " TEXT, " +
                    COLUMN_PASSWORD + " TEXT, " +
                    COLUMN_RELATIVE_MOBILE + " TEXT, " +
                    COLUMN_RELATIVE_MOBILE3 + " TEXT, " +
                    COLUMN_RELATIVE_MOBILE4 + " TEXT, " +
                    COLUMN_ADDRESS + " TEXT, " +
                    COLUMN_MOBILE + " TEXT " + ")";

我的更新方法不起作用

 public StringBuffer getData(){

        String query="SELECT * FROM "+TABLE_NAME;

        SQLiteDatabase sqLiteDatabase=this.getReadableDatabase();
        Cursor cursor=sqLiteDatabase.rawQuery(query,null);

        StringBuffer stringBuffer=new StringBuffer();

        if (cursor!=null)
        {
            cursor.moveToFirst();
            do {

                String mobile=cursor.getString(cursor.getColumnIndex("mobile2"));
                stringBuffer.append(" "+mobile+ "\n");


            }while (cursor.moveToNext());
            cursor.close();
        }
        return stringBuffer;
    }


    public void updatedata(String mob) {
        SQLiteDatabase sqLiteDatabase=this.getWritableDatabase();
        ContentValues contentValues=new ContentValues();
        contentValues.put(COLUMN_RELATIVE_MOBILE,mob);


        sqLiteDatabase.update("TABLE_NAME",contentValues,"userid='5' and RELATIVE_MOBILE='mobile2'",null);


    }

这是点击更新按钮

enter code here
     sqLiteDBHelper.updatedata(editText.getText().toString());
            StringBuffer stringBuffer=sqLiteDBHelper.getData();
            tvshow.setText(stringBuffer.toString());
            String op = tvshow.toString();



            Toast.makeText(LoginSuccessActivity.this, "Contacts updated", Toast.LENGTH_SHORT).show();


        }
    });

【问题讨论】:

    标签: android mysql sqlite


    【解决方案1】:
    SQLiteDatabase db = this.getWritableDatabase();
     db.update("Put your table name here", contentValues, "put your unique column name" + "='" + id + "'", null);
    

    在你的情况下语法是:

      ContentValues cv = new ContentValues();
      cv.put("COLUMN_MOBILE","Bob");
      db.update(TABLE_NAME, cv, COLUMN_ID + "='" + id + "'", null);
    

    其中 id 是你传递的参数值。

    【讨论】:

    • NumberFormatException: For input string: "8000099999" error in dis
    • 在 COLUMN_MOBILE 之后的 wat id "bob"??
    • id 是你的column_id,比如行号是5,那么你必须在那里传递5,比如:int id =5; db.update(TABLE_NAME, cv, COLUMN_ID + "='" + id + "'", null);
    • 它给出错误:--SQLiteException:没有这样的列:COLUMN_RELATIVE_MOBILE(代码1):
    • wat 应该放入 public void update(String s) 而不是 String s 或 (String mobile)?
    【解决方案2】:

    请将您的代码替换为以下代码

    sqLiteDatabase.update(TABLE_NAME,contentValues,"userid='5' and RELATIVE_MOBILE='mobile2'",null);

    【讨论】:

      【解决方案3】:

      首先创建一个ContentValues 对象:

      ContentValues cv = new ContentValues();
      cv.put("Field1","Bob"); //These Fields should be your String values of actual column names
      cv.put("Field2","19");
      cv.put("Field2","Male");
      

      然后使用更新方法,它现在应该可以工作了:

      sqLiteDatabase.update(TableName, cv, "_id="+id, null);
      

      【讨论】:

      • 没有错误,但已经存储的值显示在编辑文本中..不是更新的
      • 嘿,请删除 TABLE_NAME 的双重配额,只需传递 TABLE_NAME 否则您可以像这样传递“配置文件” sqLiteDatabase.update(TABLE_NAME,contentValues,"userid='5' and RELATIVE_MOBILE='mobile2'",空);
      • 错误:- SQLiteException:没有这样的列:RELATIVE_MOBILE(代码1):,编译时:UPDATE profile SET mobile2=? WHERE userid='5' 和 RELATIVE_MOBILE='mobile2'
      • 只需替换你的这个 sqLiteDatabase.update("TABLE_NAME",contentValues,"userid='5' and RELATIVE_MOBILE='mobile2'",null);带有 sqLiteDatabase.update(TABLE_NAME,contentValues,"userid='5' and RELATIVE_MOBILE='mobile2'",null); 的语句
      • 只需替换你的这个 sqLiteDatabase.update("TABLE_NAME",contentValues,"userid='5' and RELATIVE_MOBILE='mobile2'",null);带有 sqLiteDatabase.update(TABLE_NAME,contentValues,"userid= 5",null); 的语句
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多