Java SQLITE数据库更新函数找不到行ID?
我试图更新一个用户的“现金堆栈”,当该用户点击使用他们在游戏中的货币时。到目前为止,我发现用户的ID应该是6,但是当我尝试在数据库更新函数中使用这个硬编码值时,我得到了一个Java SQLITE数据库更新函数找不到行ID?,java,android,database,sqlite,Java,Android,Database,Sqlite,我试图更新一个用户的“现金堆栈”,当该用户点击使用他们在游戏中的货币时。到目前为止,我发现用户的ID应该是6,但是当我尝试在数据库更新函数中使用这个硬编码值时,我得到了一个null对象引用错误。有人能帮我理解为什么这个值不正确吗?我在安卓工作室工作,使用SQLite 正在使用的函数:public void updateCashStack(int newCashStack){..}(见下文),fiveDollar.setOnClickListener(..) 我如何找到身份证号码: int las
null
对象引用错误。有人能帮我理解为什么这个值不正确吗?我在安卓工作室工作,使用SQLite
正在使用的函数:public void updateCashStack(int newCashStack){..}
(见下文),fiveDollar.setOnClickListener(..)
我如何找到身份证号码:
int lastID = 0;
for (int i = 0; i < 10; i++) {
if(userIDs[i] != 0) {
lastID = userIDs[i];
Toast.makeText(ChoosePokerStyle.this, "User ID = " + lastID, Toast.LENGTH_LONG).show( );
}
}
}
fiveDollar.setOnClickListener
code:
fiveDollar.setOnClickListener(new View.OnClickListener( ) {
@Override
public void onClick(View v)
{
int five = 5;
int cashStackAsInt = Integer.parseInt(cashStack);
cashStackAsInt = cashStackAsInt - five;
userCashStackPrompt.setText(Integer.toString(cashStackAsInt));
myDB.updateCashStack(cashStackAsInt);
Toast.makeText(ChoosePokerStyle.this, "You have bet $5", Toast.LENGTH_LONG).show( );
}
}
在您的表中没有标题为
id
的列。它应该是ID
。尝试以下方法:
whereClause = "ID = ?";
SQL中的语法不区分大小写,但在数据库定义列
String COL1=“ID”代码>它与字符串whereClause=“id=?”不匹配代码>
您可以使用String whereClause=COL1+“=?”代码>或字符串whereClause=“ID=?”代码>
希望这有帮助
我得到一个空对象引用错误
最可能的原因是myDB的范围内实例化实例不存在
您可以通过在行上放置断点来检查这一点
db.update(TABLE_NAME, values, whereClause, new String[] {"6"});
在DatabaseHelper.java中
然后在调试模式下运行(例如,单击绿色错误)。
当调试窗口出现时,检查变量
猜测db为空。如果是这样,您需要确保已实例化myDB,并且调用在myDB的范围内(例如,在类级别声明myDB,并在活动的onCreate方法或片段的等效方法中实例化它)
有关调试的更多信息,请参阅。在第db.update行(表名称、值、whereClause、新字符串[]{“6”)中添加断点数据库代码中的code>。在调试模式下运行(例如,单击绿色错误)。当调试窗口出现时,检查变量。猜测db为空。如果是这样,您需要确保myDB已经实例化,并且acll在myDB的范围内。有关调试/断点的更多详细信息,请参阅Yay!!这成功了!!非常感谢您,我将在未来的编程中更多地使用调试模式GG!那很好。我已经添加了上面的答案。请您勾选这个作为答案。@BickeringVmax,您勾选了吗?
db.update(TABLE_NAME, values, whereClause, new String[] {"6"});