【发布时间】:2011-11-25 21:23:00
【问题描述】:
你能看出我在这段代码中做错了什么吗?我正在使用 DBUtils 填充一些文本框,但在“Get”行出现“空指针异常”。我还使用了 Toast 来确保 intCurrentId 确实有一个值。
这是我使用的代码:
Sub ListViewPeopleEventHandler_ItemClick (Position As Int, Value As Object)
' Update the details area.
'-------------------------
Dim valuesFromTheListView() As String
valuesFromTheListView = Value
intCurrentId = valuesFromTheListView(0)
Dim mapOfTableFields As Map
mapOfTableFields = DBUtils.ExecuteMap(SQL, _
"SELECT Id, FirstName, LastName FROM PeopleToVisit WHERE id = ?", _
Array As String(intCurrentId))
ToastMessageShow(intCurrentId, False)
' I get the error on this next line.
'-------------------------------------
EditTextFirstName.Text = mapOfTableFields.Get("FirstName")
EditTextFirstName.RequestFocus
EditTextFirstName.SelectAll
EditTextFirstName.Color = Colors.Cyan
EditTextLastName.Text = mapOfTableFields.Get("LastName")
EditTextLastName.RequestFocus
EditTextLastName.Color = Colors.Cyan
tableMode = "Edit"
Activity.Title = "Maintenance - Result Of Visit *** EDIT ***"
End Sub
这是数据库表的结构:
SQL.ExecNonQuery("CREATE TABLE PeopleToVisit (" & _
"Id INTEGER PRIMARY KEY, " & _
"FirstName TEXT, " & _
"LastName TEXT, " & _
"Address1 TEXT, " & _
"Address2 TEXT, " & _
"City TEXT, " & _
"State TEXT, " & _
"Zip TEXT, " & _
"PrimaryPhone TEXT, " & _
"SecondaryPhone TEXT, " & _
"Email TEXT, " & _
"LastVisitNote TEXT " & _
")")
谢谢。
【问题讨论】:
-
您说您检查以确保
intCurrentID确实有一个值,但您是否检查数据库中是否有该ID 的行? (另外,请在撰写文章时在帖子下方的预览窗口中检查您的代码格式;如果您进行格式设置以便阅读时无需左右滚动,则会更容易。) -
嗨,Ken,它应该在那里,因为 id 来自列表视图中的值,所以我使用该 Id 进行查询。此子例程的预期目的是使用列表视图中的值并执行查询以获取数据库表中的其余详细信息,以便它们可以显示在其他文本框中。
-
我知道它应该是。 :) 但是你确认它是了吗?换句话说,您是否确保
intCurrentID不仅有一个值,而且它是一个有效 值?如果您在数据库中插入了 3 个人,并且intCurrentID的值为 5,那么它可能很重要。 :) -
当前表中有 2 行数据,toast 将显示 intCurrentID = 1 或 intCurrentID = 2。我还尝试了 ToastMessageShow(mapOfTableFields.Get("Id"), False) 和它总是返回“Null”。
标签: basic4android