asp.net sqlcommand работает не так, как должно - справка по отладке - PullRequest
0 голосов
/ 01 июля 2010

Это действительно странная ситуация, в которой я не могу понять, в чем проблема.

У меня есть простое текстовое поле ASP и кнопка, при нажатии на кнопку у меня есть простая подпрограмма sqlconnection / commandвыполнить простое обновление базы данных на основе текстового значения текстового поля.

Код:

Using myConnection As SqlConnection = New sqlConnection(ConfigurationManager.ConnectionStrings("sqldbconn").ConnectionString)
    myConnection.Open()
    Dim strSQL As String = "insert into users(name) select @name"
    Dim myCommand As New Data.SqlClient.SqlCommand(strSQL, myConnection)
    myCommand.CommandType = Data.CommandType.Text
    myCommand.Parameters.Add(create_Parameter("@name", Data.SqlDbType.VarChar, 50, Data.ParameterDirection.Input, txName.Text))
    myCommand.ExecuteNonQuery()
    myConnection.Close()
End Using

create_Parameter - это простая проверенная функция, которая выполняет 2-3 строки, которые обычно занимаетдля создания объекта параметра.

Проблема, с которой я столкнулся, заключается в том, что добавляемое в базу данных значение всегда представляет собой запятую, за которой следует текст, указанный в текстовом поле.

Я выполнил ответ.write перед вызовом ExecuteNonQuery для проверки как значения параметра, так и CommandText, которые в порядке и ожидаемо.Если я скопирую то, что ожидается, в окно запросов в студии управления, оно будет работать нормально .. users - простая таблица со столбцом varchar, без триггеров или ограничений и т. Д. В коде ASP нет других подпрограмм, кроме того, что я показал.

Так что теперь я застрял, что еще я могу сделать, чтобы выяснить, где / почему эта запятая добавляется в мой оператор вставки ???

Приветствия!

1 Ответ

0 голосов
/ 01 июля 2010

Возможно, это не имеет отношения к вашей проблеме, но я обычно пишу такую ​​вставку:

INSERT INTO users (name)
VALUES  @name
...