从类型转换为DBNull'输入' String'是无效的vb.net

时间:2015-04-07 09:01:43

标签: vb.net

使用下面给出的代码显示一个错误。错误是:" 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()

4 个答案:

答案 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>
        )
    }
}