Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从数据库计算每个组合框值的值?_C# - Fatal编程技术网

C# 如何从数据库计算每个组合框值的值?

C# 如何从数据库计算每个组合框值的值?,c#,C#,如何从数据库中计算一个人的每小时工资 我的代码在这里: sqc = con.CreateCommand(); string query5 = "SELECT [SalaryGrade] FROM tbl_gradestep where GradeNumber =" + cmbGradeNumber.SelectedItem.ToString() + " and StepNumber =" + cmbStepNumber.SelectedItem.ToString() + ""; sqc.Comm

如何从数据库中计算一个人的每小时工资

我的代码在这里:

sqc = con.CreateCommand();
string query5 = "SELECT [SalaryGrade] FROM tbl_gradestep where GradeNumber =" + cmbGradeNumber.SelectedItem.ToString() + " and StepNumber =" + cmbStepNumber.SelectedItem.ToString() + "";
sqc.CommandText = query5;

sda = new SqlDataAdapter(sqc);
dt = new DataSet();
sda.Fill(dt);

if(dt.Tables[0].Rows.Count > 0)
{
    lblSalary.Text = dt.Tables[0].Rows[0]["SalaryGrade"].ToString();
    lblHour.Text = (*dt.Tables[0].Rows[0]["SalaryGrade"].ToString()/22*/8);
}

con.Close();
错误是

运算符“/”不能应用于“string”和“int”类型的操作数

错误是“运算符”/“不能应用于类型的操作数 “string”和“int”

错误消息提供了大量信息

dt.Tables[0].Rows[0]["SalaryGrade"].ToString()
是一个
字符串
,而
22
是一个
int
文本。您不能将除法运算符应用于它们。如何将
字符串
int
进行除法,这是一个无意义的操作。您需要如下操作:

((decimal)dt.Tables[0].Rows[0]["SalaryGrade"])/(22*8)
首先将
SalaryGrade
转换为十进制,然后将其除以小时数

注意:在上面一行中,我假设
SalaryGrade
可以转换为
decimal
。如果转换不可能,将抛出异常。因此,更安全的方法是尝试使用
decimal
TryParse
方法:

decimal salaryGrade;
if(decimal.TryParse(dt.Tables[0].Rows[0]["SalaryGrade"], out salaryGrade))
{
    var salaryPerHour = salaryGrade/(22*8);
}

这是一个非常明确的字符串:

dt.Tables[0].Rows[0]["SalaryGrade"].ToString()
字符串只是文本。您不需要对其执行数学运算。如果该字符串保证为整数,则可以直接转换为:

lblHour.Text = (int.Parse(dt.Tables[0].Rows[0]["SalaryGrade"])/22/8);
如果不能保证,那么您可能需要先进行一些错误检查:

int salaryGrade;
if (!int.TryParse(dt.Tables[0].Rows[0]["SalaryGrade"], out salaryGrade))
{
    // wasn't an integer, handle the error condition here
}
lblHour.Text = (salaryGrade/22/8);

注意:整数除法只会产生一个整数。如果您要查找十进制值,则需要将数字转换为具有十进制精度的值。(例如
decimal
,当然还有
.Parse()
.TryParse()
方法。)否则,您可能会以零结束,而不知道原因。

发生错误是因为您无法在字符串中使用数学运算! 尝试以下操作:声明一个int变量并将表中的数据赋值给它,然后使用“label.Text”赋值中的int将该int转换为字符串。 希望对你们有所帮助!

我的代码现在正在运行:)谢谢你们

 decimal salaryGrade;  
  sqc = con.CreateCommand();
        string query5 = "SELECT [SalaryGrade] FROM tbl_gradestep where GradeNumber =" + cmbGradeNumber.SelectedItem.ToString() + " and StepNumber =" + cmbStepNumber.SelectedItem.ToString() + "";
        sqc.CommandText = query5;
        sda = new SqlDataAdapter(sqc);
        dt = new DataSet();
        sda.Fill(dt);
        if(dt.Tables[0].Rows.Count > 0)
        {
            lblSalary.Text = dt.Tables[0].Rows[0]["SalaryGrade"].ToString();                     
            if (decimal.TryParse(dt.Tables[0].Rows[0]["SalaryGrade"].ToString(), out salaryGrade))
            {

            }
           lblHour.Text = Convert.ToDecimal(salaryGrade / 22 / 8).ToString("0.00");


        }

        con.Close();
    }

还有一件事,当逗号有几千个时,我怎样才能得到它呢?

编译器正在告诉你到底哪里出了问题-你不能对
字符串和
int
使用
/
运算符。首先将字符串解析为一个数字。如何将字符串除以一个数字?在
l中,这两个
*
符号在做什么blHour.Text
assignment?你能做一下代码吗?>。这个*是斜体的HeHeHeHe指定的cast无效:(@James DeanLorenzoAlimboyogue)数据库中
SalaryGrade
的数据类型是什么?varchar(50)它给我输出“xx.xxxxxxxxxxxxxxxxx”我怎么能在点后两个数字?hehenah我现在很好,我刚刚输入了”“0.00”到.ToString(“0.00”)对不起,先生,你能把我的问题投票给我吗?:(我不能再问问题了:((嗯,如果我想放两位小数怎么办?@James DeanLorenzoAlimboyogue:用小数代替整数表示小数精度。