ODBC соединение с MySQL не добавит значения - PullRequest
2 голосов
/ 14 мая 2011

Я пытаюсь вставить значения из моего приложения 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 в мою базу данных.

Есть какие-нибудь подсказки, что я делаю не так?

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Вот ссылка на статью, которая должна решить вашу проблему.Замените символы @ на?вместо символов.

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

Надеюсь, это поможет.

1 голос
/ 14 мая 2011

Как насчет переключения на использование ? и имен параметров, совпадающих с именами столбцов?Возможно, рассмотрите возможность переключения на AddWithValue(), если можете.

С MSDN OdbcParameterCollection.Add Метод

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. 

Я подозреваю, ? заполнители будут заполнены значениями в порядке по мере их добавления в коллекцию параметров (из другой вопрос / ответ ).

...