我在网站上工作。我无法转换表格中行[""] 中的数字值。我的代码是:
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");
}
}
当我运行代码(我也做调试)时,错误就在这里:
类型' System.InvalidCastException'的例外情况发生在App_Web_mavjxnn0.dll中,但未在用户代码中处理 附加信息:指定的演员表无效。
所以问题是在列和特定行中转换值。 为什么我不能以这种方式投射?
我有一个专栏"数量",所以我也尝试了int realQuantity = (int)row["quantity"];
答案 0 :(得分:0)
在项目中添加对 System.Data.DataSetExtensions 的引用,并尝试使用此代码获取命名字段的值。
using System.Data;
...
row.Field<int>("MyColumnName");
检查列的正确类型(INT =&gt; int)以及是否存在可空数据。