使用下面给出的代码显示一个错误。错误是:" Conversion from type 'DBNull' to type 'String' is not valid.
"帮我找一个合适的解决方案。谢谢。
代码:
cmd2.CommandText = "SELECT [first_name]+' ' +[middle_name]+' ' + [last_name] AS NAME, [staff_id] FROM [staff_profile]"
sdr2 = cmd2.ExecuteReader
While sdr2.Read
drop1l.Items.Add(New ListItem(sdr2("name"), sdr2("staff_id"))) // error popup here
End While
sdr2.Close()
答案 0 :(得分:9)
你应该这样试试:
If Not IsDBNull(dt.Rows(0)("name")) Then
sdr2.Value = dt.Rows(0)("name")
End If
If Not IsDBNull(dt.Rows(1)("staff_id")) Then
sdr2.Value = dt.Rows(1)("staff_id")
End If
或像这样的脏修复:
drop1l.Items.Add(New ListItem(sdr2("name").ToString(), sdr2("staff_id").ToString()))
答案 1 :(得分:2)
您收到此错误的原因是sdr2("name")
或sdr2("staff_id")
为null
。你可以通过两种方式避免它:
1
drop1l.Items.Add(New ListItem(sdr2("name").Tostring(), sdr2("staff_id").Tostring()))
2。或在查询中检查空值
答案 2 :(得分:1)
这意味着您收到的其中一个值为null,并且无法将其转换为字符串。您可以实现一个为您执行转换的函数(并检查值是否为dbnull或什么都没有),在以下行中的内容:
Function GetStringValue(value as Object) as String
if value is Nothing or IsDBNull(value)then
Return String.Empty
End If
Return DirectCast(value, GetType(String))
End Function
然后你可以做
drop1l.Items.Add(new ListItem(GetStringValue(sdr2("name")), GetStringValue(sdr2("staff_id")))
答案 3 :(得分:0)
也是这样尝试
export default class App extends React.Component {
render() {
return (
<Provider store={store}>
<View style={styles.container}>
<ReduxNavigation />
<ActionButton buttonColor="rgba(231,76,60,1)">
<ActionButton.Item buttonColor='#9b59b6' title="New Task" onPress={() => console.log("notes tapped!")}>
<Icon name="md-create" style={styles.actionButtonIcon} />
</ActionButton.Item>
<ActionButton.Item buttonColor='#3498db' title="Notifications" onPress={() => {}}>
<Icon name="md-notifications-off" style={styles.actionButtonIcon} />
</ActionButton.Item>
<ActionButton.Item buttonColor='#1abc9c' title="All Tasks" onPress={() => {}}>
<Icon name="md-done-all" style={styles.actionButtonIcon} />
</ActionButton.Item>
</ActionButton>
</View>
</Provider>
)
}
}