Оператор '-' не может быть применен к операндам типа string и string - PullRequest
0 голосов
/ 27 февраля 2019

Я хочу создать новую переменную, используя две строковые переменные.Но я продолжаю получать сообщение об ошибке

«оператор» - нельзя применить к операндам типа строка и строка c # ".

string query3 = "SELECT Quantity FROM Supplier WHERE [Supplier ID]='"+supplierid+"'";
string query4 = "SELECT Quantity FROM Supplier WHERE [Book ID] = '" + bookid + "'";
SqlCommand cmd3 = new SqlCommand(query3, con);
SqlCommand cmd4 = new SqlCommand(query4, con);
con.Open();
string temporaryquantity = cmd3.ExecuteScalar().ToString();
string temporaryquantitystocks = cmd4.ExecuteScalar().ToString();
string totalcostforstocks = (temporaryquantitystocks-temporaryquantity + quantity) * buyingpriceperbook;

" количество "равнов типе int"buypriceperbook" имеет двойной тип

Кто-нибудь может мне помочь с этим?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы не можете применять арифметические операторы к строкам.Замените на двойное или целое:

string query3 = "SELECT Quantity FROM Supplier WHERE [Supplier ID]='" + supplierid + "'";
string query4 = "SELECT Quantity FROM Supplier WHERE [Book ID] = '" + bookid + "'";

SqlCommand cmd3 = new SqlCommand(query3, con);
SqlCommand cmd4 = new SqlCommand(query4, con);
con.Open();
double temporaryquantity = Convert.ToDouble( cmd3.ExecuteScalar());
double temporaryquantitystocks = Convert.ToDouble(cmd4.ExecuteScalar());
double totalcostforstocks = (temporaryquantitystocks - temporaryquantity + quantity) * buyingpriceperbook;
0 голосов
/ 27 февраля 2019

Преобразование в числовой тип, а не в строки:

int temporaryquantity = (int)cmd3.ExecuteScalar();

Другие примечания:

  • ExecuteScalar даст вам только first значение из вашего запроса - ваши запросы гарантированно возвращают только одно значение?Или вы ожидаете, что что-то суммирует несколько значений?
  • ExecuteScalar возвращает object, то есть это может быть строка, двойное число, целое число, ноль и т. Д. Если вы приведете к intвы предполагаете , что запрос возвращает ненулевое целочисленное значение, иначе он не будет выполнен во время выполнения.
...