我正在尝试将我的asp.net应用程序中的值插入到我的MySQL数据库中。
在注册页面上,用户可以填写Name
和Pass
并按提交。
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值添加到我的数据库中。
关于我做错的任何线索?
答案 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
我希望有所帮助。