Nigelg11 Ответов: 2

Vb.net: есть ошибка с этим кодом.пожалуйста, помогите. Я новичок и мне дали этот фрагмент кода для исправления


SQLCmd.CommandText = "INSERT INTO PriceBook_Cost (EntryDate, Country, PoP, City, Medium, Capacity, Currency, " &
"NRC, MRC) VALUES ('" &
DateTime.Now & "','" &
country.Replace("'", "''") & "','" &
PBPoPtoUse.Replace("'", "''") & "','" &
city.Replace("'", "''") & "','" &
theMedium & "','" &
MB & "','" &
"USD',’" &
If(MaxNRC > 0, "'" & Convert.ToInt64(MaxNRC) & "'", "NULL") & "," &
If(MinMRC > 0, "'" & Convert.ToInt64(MinMRC) & "'", "NULL") & ")"


Что я уже пробовал:

Привет. Я новичок в компании VB.net пожалуйста, помогите разобраться в проблеме, чтобы исправить этот фрагмент кода

Richard MacCutchan

Да, это нечитабельно.

Patrice T

а сообщение об ошибке есть ?

Dave Kreskowiak

И вы никогда не упоминали, что вы подразумеваете под "исправлением". Что в этом коде, в частности, нарушено, кроме очевидной конкатенации строк для построения SQL-запроса.

2 Ответов

Рейтинг:
1

OriginalGriff

Не делай этого так. Хорошо, вы заменяете цитату парой кавычек, но это не очень хорошо защищает вас - и делает ваш код очень трудным для чтения.

Вместо этого используйте параметризованные запросы:

Using con As New MySqlConnection(strConnect)
	con.Open()
	Using com As New MySqlCommand("INSERT INTO myTable (myColumn1, myColumn2) VALUES (@C1, @C2)", con)
		com.Parameters.AddWithValue("@C1", myValueForColumn1)
		com.Parameters.AddWithValue("@C2", myValueForColumn2)
		com.ExecuteNonQuery()
	End Using
End Using

Это безопаснее, вам не нужно возиться с заменой, и это гораздо более читабельно. Вы, вероятно, обнаружите, что это устраняет вашу проблему в то же время.


Рейтинг:
1

Member 14917440

Как дела, этот уик-энд очень приятен для вас.
я, потому что на этот раз я читаю этот фантастический образовательный абзац здесь, у себя дома.


Ливерпуль дракт