2015-06-06 42 views
0

我在一个网站工作。我无法转换在我的表中行[“”]中的数字值。我的代码是:C#抛出错误(DataRow)

public partial class bought : System.Web.UI.Page 
{ 
    protected int id; 
    protected DataRow row; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Session["admin"] == null || (bool)Session["admin"] == false) //si es que no eres admin, vete de la pagina porque hay paginas que solo admin puede ver. 
     { 
      Response.Redirect("home.aspx"); 
     } 
     if (Request.Form["id"] != null) 
     { 
      id = int.Parse(Request.Form["id"]); 
     } 
     string sql = ""; 
     int quantity = int.Parse(Request.Form["quantity"]); 
     DataTable dt = DAL.GetTable("select * from item where id =" + id); 
     row = dt.Rows[0]; 
     int realQuantity = (int)row[5]; 
     int finalQuantity = realQuantity - quantity; 
     OleDbConnection con = DAL.GetConnection(); 
     con.Open(); //ya esta listo, entonces abrimos el Database 
     if (con.State == ConnectionState.Open) //si la conexion esta abierta... 
     { 
      if (realQuantity == quantity) 
      { 
       sql = "DELETE FROM item WHERE (id =" + id + ")"; 
      } 
      else if (realQuantity > quantity) 
      { 
       sql = "UPDATE item SET quantity = " + finalQuantity + " WHERE (id = "+id+")"; 
      } 
      OleDbCommand cmd = DAL.GetCommand(con, sql); 
      int num = cmd.ExecuteNonQuery(); //es insert y no select. NonQuery es que no devuelve. 
      con.Close(); 
     } 
     else Response.Redirect("buyItems.aspx?err=Error en la base de datos"); 
     Response.Redirect("home.aspx"); 
    } 
} 

当我运行的代码(我也做调试)错误是在这里:

“”类型的异常出现在App_Web_mavjxnn0.dll但没有在用户代码中处理 附加信息:指定的转换无效。

所以问题是在一列和一个特定的行中投入一个值。 为什么我不能这样做? 我有一栏是“量”,所以我想也int realQuantity = (int)row["quantity"];

+2

你可以看到'row [“quantity”]中实际存在的值' – Fabio

+0

使用星号选择字段的危险永远不会被完全解释。你确定查询返回的6列真的是“数量”列吗?当然,这假设你在这个列的数据库中有一个整数数据类型,而不是无法转换为整数的东西。 – Steve

+0

这是我的DT DataTable:http://i.imgur.com/9mlwbfM.png –

回答

0

参考,System.Data.DataSetExtensions添加在您的项目,并尝试这种代码,来命名字段的值。

using System.Data; 

... 

row.Field<int>("MyColumnName"); 

检查列的正确类型(INT => int)以及是否存在可为空的数据。

+0

感谢您的帮助!但是...我怎么能让人们知道这个问题已经解决了(在这个案例中是在评论中)? –

+0

http://stackoverflow.com/help/someone-answers –

+0

您需要接受anwser,但不是评论:http://stackoverflow.com/help/someone-answers –