与MySQL的ODBC连接不会添加值

时间:2011-05-14 15:33:45

标签: .net mysql vb.net ado.net odbc

我正在尝试将我的asp.net应用程序中的值插入到我的MySQL数据库中。

在注册页面上,用户可以填写NamePass并按提交。

Public Function InsertMember(ByVal objMember As Member) As Boolean

    myconn.Open()

    Dim cmd As New OdbcCommand("INSERT INTO member(Name, Pass) VALUES (@Name,@Pass)", myconn)

    cmd.CommandType = CommandType.Text
    cmd.Parameters.Add("Name", OdbcType.VarChar).Value = objMember.Name
    cmd.Parameters.Add("Pass", OdbcType.VarChar).Value = objMember.Pass

    cmd.ExecuteNonQuery()

    cmd.Dispose()
    cmd = Nothing

    myconn.Close()
    myconn.Dispose()

    Return True

End Function

但所有这一切都是将NULL值添加到我的数据库中。

关于我做错的任何线索?

2 个答案:

答案 0 :(得分:1)

如何切换约定以使用?和与列名匹配的参数名称? 如果可以,也许可以考虑切换到AddWithValue()

来自MSDN OdbcParameterCollection.Add Method

Dim insertSQL As String = "INSERT INTO member(Name, Pass) VALUES (?,?)"
Dim cmd As New OdbcCommand(insertSQL, myconn)
'cmd.Parameters.Add("Name", OdbcType.VarChar).Value = objMember.Name '

cmd.Parameters.AddWithValue("Name", objMember.Name)           
cmd.Parameters.AddWithValue("Pass", objMember.Pass) 

'Note that with ODBC Command, the ORDER you add to the parameters collection
'matters most. The names of your params don't matter. 

我怀疑?占位符将按照按顺序填充,因为它们已添加到参数集合中(来自another question/answer)。

答案 1 :(得分:1)

以下是一篇文章的链接,可以解决您的问题。基本上,用@替换@字符?而不是字符。

http://forums.asp.net/t/1283161.aspx

该论坛中的OP遇到了像您一样插入空值的问题。解决方案是修改代码,如下所示:

Dim cmd As New OdbcCommand("INSERT INTO member(Name, Pass) VALUES (?Name,?Pass)", myconn)

cmd.CommandType = CommandType.Text
cmd.Parameters.Add("?Name", objMember.Name)
cmd.Parameters.Add("?Pass", objMember.Pass)

cmd.ExecuteNonQuery()

如果你想指定字段的值类型,你可以像你一样做,但你应该像之后一样添加长度:

cmd.Parameters.Add("?Name", OdbcType.VarChar, 30).Value = objMember.Name

我希望有所帮助。