Goran Bibic Ответов: 2

Вставить в SQL с символом "-" char


Insert into sql with "-" char



I have result    exp  1.00
 
How to insert into to have value -1.00?
 
Thank you


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

using (SqlCommand cmd = new SqlCommand("INSERT INTO dbo.mp_list (iznos_sa_pdv, kupac) VALUES(@iznos_sa_pdv)", con))  
{  
cmd.Parameters.Add("@iznos_sa_pdv", SqlDbType.VarChar, 255).Value = ukupnolabel.Text;  
}  

Afzaal Ahmad Zeeshan

Не берите в голову

А что сохраняется в базе данных после выполнения этого кода?

Goran Bibic

Это часть кода, в базе данных находится значение 1.00
Мне нужно сохранить в базе данных значение -1.00

Нужна помощь вроде этой или...

cmd.Parameters.Add("@iznos_sa_pdv", SqlDbType.VarChar, 255).Value = '-'ukupnolabel.Текст;

Dave Kreskowiak

Почему вы храните числа в виде текста в базе данных?

2 Ответов

Рейтинг:
2

phil.o

Решение "грубой силы" может быть таким же простым, как:

cmd.Parameters.Add("@iznos_sa_pdv", SqlDbType.VarChar, 255).Value = $"-{ukupnolabel.Text}";

Но будьте осторожны: если в текстовом поле уже есть отрицательное значение, вы получите значение, которое не является правильным числом.

Может быть, лучше разобрать строку на двойник, отрицать ее и предоставить результат обратно в запрос:
double value;
if (double.TryParse(ukupnolabel.Text, out value))
{
   value = -value;
   cmd.Parameters.Add("@iznos_sa_pdv", SqlDbType.VarChar, 255).Value = value.ToString();
}
else
{
   // Invalid value provided.
}


Но есть проблема с вашим запросом: вы указываете два столбца для INSERT заявление, но только предоставить значение для одного из них.

Кроме того, вы должны использовать правильные типы данных в своей базе данных: если iznos_sa_pdv столбец предназначен для хранения вещественных чисел, то он не должен иметь varchar наберите в первую очередь. Тогда это позволит вам писать
double value;
if (double.TryParse(ukupnolabel.Text, out value))
{
   value = -value;
   cmd.Parameters.Add("@iznos_sa_pdv", SqlDbType.Float).Value = value;
}
else
{
   // Invalid value provided.
}


Goran Bibic

cmd.параметры.AddWithValue ("@pdv", iznosSaPdvom - (novaCijenaBezPdva * double.Parse(row.Cells["kolicina"].Value.Метод toString())));


Как поставить здесь - ?

phil.o

Не делайте этого в одной строке. Разложите свои значения и примените логику, которую я предоставил в своем решении.

Рейтинг:
1

OriginalGriff

Если вы хотите изменить значение в существующей строке, вы не вставляете - это всегда добавляет новую строку.
Вместо этого вы используете обновление:

UPDATE MyTable SET MyColumn = @MyParameter WHERE MyIDColumn=@IDOFTheRowToChange