无法更新我的数据库表

时间:2013-04-06 12:41:54

标签: android database sql-update

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

这里是 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();
}
我在这里做错了什么?请解释..我似乎无法弄明白!

1 个答案:

答案 0 :(得分: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字段/列是String或Text数据类型。 否则如果它是一个数字说一个整数然后再删除单引号,如 下面的那个。

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();

}