我对Android应用程序开发很新。在我的应用程序中,我正在尝试将钱添加到钱包中,这是不成功的。 logcat在执行时不会显示任何错误。
我在这里发布myDbAdapter.java(数据库),add_amount.java和activity_add_amount.xml。
add_amount.java如下:
public class Add_Amount extends AppCompatActivity {
TextView amount;
String total;
TextView up;
private no.nordicsemi.android.nrftoolbox.myDbAdapter mydb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add__amount);
up=(TextView)findViewById(R.id.textView_wallet);
amount=(TextView)findViewById(R.id.editText_amount);
String Amount=(String)amount.getText().toString();
mydb = new no.nordicsemi.android.nrftoolbox.myDbAdapter(this);
Cursor rs = mydb.getData(1);
rs.moveToFirst();
String wall=rs.getString(rs.getColumnIndex(no.nordicsemi.android.nrftoolbox.myDbAdapter.CONTACTS_COLUMN_WALLET));
total=Amount+wall;
}
public void addamt(View v){
boolean b=mydb.updateWallet(total,1);
if(b==true)
message(getApplicationContext(),"updated");
else
message(getApplicationContext(),"not updated");
}
}
myDbAdapter.java中的updateWallet函数如下:
public boolean updateWallet(String amount,Integer id)
{
SQLiteDatabase db=this.getWritableDatabase();
ContentValues contentValues=new ContentValues();
contentValues.put("wallet",amount);
db.update("contacts",contentValues,"id = ? ",new String[] { Integer.toString(id)});
return true;
}
}
当我在输入任何金额后点击按钮(添加金额),吐司消息"更新"被展示。但它没有得到更新。
可能的错误在哪里?
答案 0 :(得分:0)
<强>问题强>
new String[] { Integer.toString(1)}
。因此,行已更新 WHERE ID=1
。
您应该传递 DYNAMIC
值,而不是 静态 1
。
您可以传递 email
。
public boolean updateWallet(String amount,final int _id)
{
SQLiteDatabase db=this.getWritableDatabase();
ContentValues contentValues=new ContentValues();
contentValues.put("wallet",amount);
db.update("contacts",contentValues,"id = ? ",new String[] { Integer.toString(_id)});
return true;
}
答案 1 :(得分:0)
只要没有SQL问题(例如找不到列/表,即引发异常),那么无论是否发生更新都将由您当前拥有的代码返回。
但是,仅仅因为List
没有因例外而失败(例如找不到列/表名称),它并不代表更新。
例如;如果你传递了一个不存在 id 的号码,则更新不会发出异常,而是没有任何内容会更新,因为没有要更新的行。
由于update
方法将更新的行数作为int返回,您可以通过替换: -
update
有以下几点: -
db.update("contacts",contentValues,"id = ? ",new String[] { Integer.toString(id)});
return true;
这样做会将您的问题分成两部分: -
如果返回 0 且Toast为 return (db.update("contacts",contentValues,"id = ? ",new String[] { Integer.toString(_id)}) > 0);
;然后由于某种原因,更新没有发生(例如,不存在具有指定id的行)。
如果&gt;返回0 ,Toast显示 not updated
;然后问题可能与您使用的任何方法有关,以确定没有任何行似乎已更新。
也许您可以使用可用于向日志显示数据库/表信息的方法found here。