0

如果用户想要更改密码,我需要更新我的密码表......我该怎么做......我自己尝试过,但应用程序意外停止......

这是changepassword.java

public void insertvalues()
{
    prefEditor.putString("Oldpin", Oldpin);
    prefEditor.putString("Newpin", Newpin);
    prefEditor.putString("Confirm", Confirm);


    prefEditor.commit();

    try
    {

        WayDataBase way=new WayDataBase(getApplicationContext());


        way.updatePin(Newpin,Oldpin);



    }

这是updatePin函数

public void updatePin(String newpin,String oldpin)
{
    openOrCreateDatabase();
    db.execSQL("UPDATE"+pinTable+"set Pin="+newpin+"where Pin="+oldpin+");");

    closeDatabase();
}

我在这里做错了什么?请解释一下..我似乎无法弄清楚!

4

1 回答 1

0

您下面的代码似乎缺少空格

public void updatePin(String newpin,String oldpin)
{
   openOrCreateDatabase();
   db.execSQL("UPDATE"+pinTable+"set Pin="+newpin+"where Pin="+oldpin+");");

   closeDatabase();
}

如果你有这样的情况会更好吗?

public void updatePin(String newpin,String oldpin)
{
   openOrCreateDatabase();
   db.execSQL("UPDATE "+pinTable+" SET Pin='"+newpin+"' where Pin='"+oldpin+"'");

   closeDatabase();
}

如果您还观察到除了我添加的空格之外,如果您的数据库中的 Pin 字段/列是字符串或文本数据类型,我还会添加单引号。否则,如果它是一个数字,比如一个整数,那么只需再次删除单引号,如下所示。

public void updatePin(String newpin,String oldpin)
{
   openOrCreateDatabase();
   db.execSQL("UPDATE "+pinTable+" SET Pin= "+newpin+" where Pin="+oldpin);

   closeDatabase();

}

另外,我不知道这是否是您的错误输入。但是是否需要加“);” 在 oldpin+ 之后?顺便说一句,建议将 sql 字符串分隔在一个单独的变量中。通过这种方式,您可以轻松地调试字符串本身的任何错误,如下面的错误。

public void updatePin(String newpin,String oldpin)
{
   String sql = "UPDATE "+pinTable+" SET Pin= "+newpin+" where Pin="+oldpin;
   openOrCreateDatabase();
   db.execSQL(sql);

   closeDatabase();

}
于 2013-04-06T12:57:06.073 回答