返回首页

谁能知道呢?

这是我的编码......它执行时产生的错误"索引超出了数组界限。"

 public void details(string id)

    {

        if (con.State == ConnectionState.Closed)

        {

            con.Open();

        }

            string ids = Request.QueryString["ID"];

        Session["pro_id"] = ids.ToString();

        SqlCommand cmd = new SqlCommand("select pro_id,pro_name,description,pro_img,price from product where pro_id='"+ids+"'", con);

        SqlDataReader dr = cmd.ExecuteReader();

        if (dr.HasRows)

        {

            while (dr.Read())

            {

                lblpro_id.Text = dr[0].ToString();

                lblpro_name.Text = dr[1].ToString();

                description.Text = dr[2].ToString();

                pro_img.Text= dr[7].ToString();

                lblprice.Text = dr[20].ToString();

              }

        }

        dr.Close(); 

        con.Close();

 

    }

回答

评论会员:游客 时间:2012/02/07
moneymakermaster:有至少21列在表中?如果这是不是你的异常的原因:thatraja
|。国际海事组织调试是不足以解决这个错误

{A}
{A2的}]
评论会员:游客 时间:2012/02/07
nilschaudhari:选择查询只有五列,你为什么错误来访问值7和20指数多数民众赞成:王子安东尼G
替换你的代码
{C}或替换
SqlCommand cmd = new SqlCommand("select pro_id,pro_name,description,pro_img,price from product where pro_id='"+ids+"'", con);

        SqlDataReader dr = cmd.ExecuteReader();

        if (dr.HasRows)

        {

            while (dr.Read())

            {

                lblpro_id.Text = dr[0].ToString();

                lblpro_name.Text = dr[1].ToString();

                description.Text = dr[2].ToString();

                pro_img.Text= dr[3].ToString();

                lblprice.Text = dr[4].ToString();

              }

        }
的| jeet786
评论会员:游客 时间:2012/02/07
在第一塞纳里奥:如果你定义查询中的字段。那么你的索引,则取决于你的query.for例如,如果你写:SqlCommand的CMD=新的SqlCommand("。选择pro_id,pro_name介绍,pro_img,从产品的价格pro_id="IDS"'",CON)然后索引将根据您的查询。pro_id上,将0指数,pro_name上,将1指数,说明,将2指数,pro_img上,将3指数,价格上会4指数你可以访问你的领域,根据上面的索引SqlDataReader的博士=cmd.ExecuteReader();如果(dr.HasRows) {而(dr.Read()){ lblpro_id.Text=博士[0]的ToString(); lblpro_name.Text=博士[1]的ToString();description.Text=博士[2]的ToString();pro_img.Text=博士[3]的ToString(); lblprice.Text博士[4]的ToString() }} dr.Close();con.Close()在第二个场景:如果你写在select命令*。例如:SqlCommand的CMD=新的SqlCommand("SELECT*从产品pro_id="IDS"'",CON)那就要看是什么指数的在该table.likeperticular领域,如果pro_id,pro_name,描述,pro_img,价格是您的第一,第二,第三,七,表中的20coloum在数据库中,然后将索引。BR}[0][1][2],[7],[20]。你会写。SqlDataReader的博士=cmd.ExecuteReader();如果(dr.HasRows){ 而(dr.Read()) {lblpro_id.Text=博士[0]的ToString(); lblpro_name.Text=博士[1]的ToString();description.Text=博士[2]的ToString();pro_img.Text=博士[7]的ToString(); lblprice.Text=博士[20]的ToString();} }dr.Close(); con.Close()我希望这将有助于你!享受编码
!Bojjaiah:嗨沙迪亚,
我希望这是正常的尝试。

SqlConnection的连接=新的SqlConnection("您的ConnectionString");
SqlDataReader的读者= NULL;
尝试

{
 60;connection.Open()
字符串的sql ="SELECT pro_id,pro_name介绍,从后价格= pro_id""IDS"'";
&# 160; =新的SqlCommand命令的SqlCommand()
&# 160; command.CommandText = SQL;
 0; command.Connection =连接;
& #160; 读卡器= command.ExecuteReader()

而(reader.Read())
{
 60; lblpro_id.Text =博士[0]的ToString();
lblpro_name.Text =博士[1]的ToString();
description.Text =博士[2]的ToString();
&# 160; pro_img.Text =博士[7]的ToString();
lblprice.Text =博士[20]的ToString();
& #160; }
}
&# 160;(SqlException异常前)
{
 0; Console.WriteLine(String.Format("出现异常"
&# 160; ":{0},请联系您的系统管理员。",
 60; ex.Message))
}
 0; 最后
{
 0; (读者空!)reader.Close()
&# 160; 如果(连接= NULL)connection.Close()
}