运算符' - '不能应用于字符串和字符串类型的操作数

问题描述 投票:1回答:2

我想使用两个字符串变量创建一个新变量。但我一直收到错误信息

“operator' - '不能应用于string和string 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;

“quantity”是int类型 “buypriceperbook”是双重类型

谁能帮我这个?

c# variables math operator-keyword
2个回答
0
投票

您不能将算术运算符应用于字符串。更改为double或整数:

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
投票

转换为数字类型而不是字符串:

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

其他注意事项:

  • ExecuteScalar只会为您提供查询中的第一个值 - 您的查询是否保证只返回一个值?或者您是否期望能够总结多个值?
  • ExecuteScalar返回一个object,意思是它可以是一个字符串,一个double,一个整数,null等。如果你转换为int,你假设查询返回一个非空整数值,否则它将在运行时失败。
© www.soinside.com 2019 - 2024. All rights reserved.