【问题标题】:How to change value in SQLite database?如何更改 SQLite 数据库中的值?
【发布时间】:2015-09-13 11:32:57
【问题描述】:

我正在学习 android 并构建一个相当大的项目。 我的目标是让用户在 MainActivity 中更改他们的电子邮件地址 onClick,但我不知道如何更改数据库中的值。

我知道它应该是这样的:

db.update(TABLE_NAME, cv, where, value);

问题是数据库是在 SQLiteHandler 类中定义的,但我不知道如何在“update”中使用相同的“db”代码。我在 db 上不断收到 Cannot resolve method 'update(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[])'。更新

我尝试复制

 SQLiteDatabase db = this.getWritableDatabase(); 

到我的 MainActivity,但此时我迷路了。

我关注this tutorial注册系统。

到目前为止我的代码:

private static final String TABLE_NAME = "email";

btnChangemail.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            db = new SQLiteHandler(getApplicationContext());
            HashMap<String, String> user = db.getUserDetails();


            String email1 = user.get("email");

            String s1 = etChangemeil.getText().toString();


            ContentValues cv = new ContentValues();
            cv.put(user.get("email"), s1);

            String where = (user.get("email")) ;
            String[] value = { email1 }; 


            db.update(TABLE_NAME, cv, where, value);
        }
    });

最好的问候,

【问题讨论】:

  • @RanjithKumar 正如我在问题中所说:我在 db.update 上不断收到“无法解析方法..”。编辑:“无法解析方法'update(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[])'”
  • 您是否尝试过调用与“where”不同的字符串?也许 SQL 特定的变量会使解释器感到困惑?如String myString = (user.get("email")) ;db.update(TABLE_NAME, cv, myString, value);
  • @birgit 是的,我刚做了,问题仍然存在。
  • 创建一个单独的类来扩展 SqliteOpenHelper 并从这个类访问.. 示例教程androidexample.com/…
  • 你检查过这个例子吗? stackoverflow.com/questions/18959685/…

标签: php android mysql sqlite


【解决方案1】:

来自文档:

更新数据库中行的便捷方法。

public int update (String table, ContentValues values, String whereClause, String[] whereArgs);

参数

table = 要更新的表 values = 从列名到新列值的映射。 null 是一个有效值,将被转换为 NULL

whereClause = 更新时应用的可选 WHERE 子句。传递 null 将更新所有行。

whereArgs = 您可以在 where 子句中包含 ?s,它将被 whereArgs 中的值替换。这些值将绑定为字符串。

您可以调用此方法并更新表中的行

 SQLiteDatabase db = this.getWritableDatabase(); 
 ContentValues values = new ContentValues();
 values.put("your column name", "updated email");
 String selection = "id=?";
 String[] selectionArgs = {"your row id"};
 // finally 
 db.update("your table name", values, selection,selectionArgs);

你说你得到 getWriteableDatabase() 无法解决,试试这样。

创建一个扩展 SQLiteOpenHolper 的类,并在那里创建用于更新删除和插入的方法,以便您的 Db 操作足够灵活,您可以从任何地方调用它们,请参见下面的链接 Link

【讨论】:

  • 我不断收到“无法解析方法 'getWritableDatabase();”使用该代码。
  • 好的,这样做,创建扩展 SqliteOpenHelper 的其他类并创建一个更新方法并将代码放入一个方法并将上下文传递给它.. 等待我用我的更新它回答。
  • 你的其他方法对我来说太复杂了。如您所见,我的应用程序中已经有了 SQLiteHandler。我仍然得到“无法解决方法”。这是我现在的整个应用程序。 link
  • 这是一个很好的方法。试着去理解它,即使需要一些时间,它也会给你更多的控制权。
  • 我已经有了 SQLiteHandler。我也必须创建 Helper 吗?
猜你喜欢
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 2014-04-28
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多