使用SQL命令从C#(VS 2005)中的表中检索整数

使用SQL命令从C#(VS 2005)中的表中检索整数,c#,sql,integer,C#,Sql,Integer,b基本工资,租金津贴,资历津贴,以及加班费率都是表中的整数数据类型 错误消息显示: ..无法将对象隐式转换为int。存在显式转换 您只需将值强制转换为整数: string sql="", sql2 = "", rank=""; int basic_wage, rent_allowance, seniority_allowance, overtime_rate; sql += "select rank, Basic_Wage,Rent_Allowance,Seniority_Allowance,

b基本工资
租金津贴
资历津贴
,以及
加班费率
都是表中的整数数据类型

错误消息显示:

..无法将对象隐式转换为int。存在显式转换


您只需将值强制转换为整数:

string sql="", sql2 = "", rank="";
int basic_wage, rent_allowance, seniority_allowance, overtime_rate;

sql += "select rank, Basic_Wage,Rent_Allowance,Seniority_Allowance,Overtime_rate from   Designation_Details where Designation_ID=(select Designation_ID from Officer where Member_ID=" + id + ")";

sql2 += "select Overtime_Hours from Officer where Member_ID=" + id;

DataTable dtable1 = DataAccess.GetDataTable(sql);
DataTable dtable2 = DataAccess.GetDataTable(sql2);

rank+=dtable1.Rows[0].ItemArray[0];
basic_wage = dtable1.Rows[0].ItemArray[1];
rent_allowance = dtable1.Rows[0].ItemArray[2];
seniority_allowance = dtable1.Rows[0].ItemArray[3];
overtime_rate = dtable1.Rows[0].ItemArray[4];


您只需将值强制转换为整数:

string sql="", sql2 = "", rank="";
int basic_wage, rent_allowance, seniority_allowance, overtime_rate;

sql += "select rank, Basic_Wage,Rent_Allowance,Seniority_Allowance,Overtime_rate from   Designation_Details where Designation_ID=(select Designation_ID from Officer where Member_ID=" + id + ")";

sql2 += "select Overtime_Hours from Officer where Member_ID=" + id;

DataTable dtable1 = DataAccess.GetDataTable(sql);
DataTable dtable2 = DataAccess.GetDataTable(sql2);

rank+=dtable1.Rows[0].ItemArray[0];
basic_wage = dtable1.Rows[0].ItemArray[1];
rent_allowance = dtable1.Rows[0].ItemArray[2];
seniority_allowance = dtable1.Rows[0].ItemArray[3];
overtime_rate = dtable1.Rows[0].ItemArray[4];


使用Convert.ToInt32,它们有时返回为十进制,但仍然具有正确的值


如果可能,至少使用列名,而不是索引。其他开发人员觉得这个习惯很烦人。

使用Convert.ToInt32,它们有时返回为十进制,但仍然有正确的值


如果可能,至少使用列名,而不是索引。其他开发者觉得这个习惯很烦人。

[我会留下评论,但我没有得到15个随机分数…]

1-根据Yuriy,您应该使用列名。它不仅使您的SQL查询更易于阅读,而且在有人编辑您的SQL查询时使您的代码更健壮。这将发生在2年后,当你不再参与这个项目,但它是美好的


2-您必须习惯使用绑定变量。您当前的代码是SQL注入攻击的首选代码,并且可能效率低下(取决于数据库的设置方式)。相信我(尽管我有1点),这将在以后的某个时候拯救你-也许不是在这个项目上-但在某个时候它将

[我会留下评论,但我没有15个随机点…]

1-根据Yuriy,您应该使用列名。它不仅使您的SQL查询更易于阅读,而且在有人编辑您的SQL查询时使您的代码更健壮。这将发生在2年后,当你不再参与这个项目,但它是美好的


2-您必须习惯使用绑定变量。您当前的代码是SQL注入攻击的首选代码,并且可能效率低下(取决于数据库的设置方式)。相信我(尽管我有一点),这将在以后的某个时候拯救你-也许不是在这个项目上-但在某个时候它会拯救你

非常感谢!)我从没想到我能得到如此迅速的回复。非常感谢!:)我从没想到我能得到这么快的回复。谢谢你的提示。我从来没有想到过。它大大提高了可读性。谢谢你的提示。我从来没有想到过。它大大提高了可读性。
rank += (int)(dtable1.Rows[0].ItemArray[0]);