我是通过一个安纽调用page_load
代码如下
if(!IsPostBack)
{


Conn.Open();

sqlDataAdapter1.SelectCommand.Parameters["@实验号"].Value=Request.QueryString["id"];
sqlDataAdapter1.Fill(dsproject1);
DataGrid1.DataSource = dsproject1;
DataGrid1.DataBind();
Conn.Close();

}
else
{ int i;
for(i = 0; i <= DataGrid1.Items.Count -1 ; i++)
{
if (DataGrid1.Items[i].FindControl("check1") != null)
{
if (((CheckBox)DataGrid1.Items[i].FindControl("check1")).Checked)
{
       int id1 = int.Parse(((CheckBox)DataGrid1.Items[i].FindControl("check1")).Text);
Conn.Open();
commandhavedata.Parameters["@学号"].Value=(string)Session["student"].ToString();
commandhavedata.Parameters["@实验号"].Value=(string)Request.QueryString["id"];
SqlDataReader myreader1=commandhavedata.ExecuteReader();

if(!myreader1.Read())
{
commandcj.Parameters["@学号"].Value=(string)Session["student"].ToString();
commandcj.Parameters["@实验号"].Value=(string)Request.QueryString["id"];
commandcj.ExecuteNonQuery();
}     
   Conn.Close();
Conn.Open();
commandhavesub.Parameters["@学号"].Value=(string)Session["student"].ToString();
commandhavesub.Parameters["@子类号"].Value=id1.ToString();
SqlDataReader myreader2=commandhavesub.ExecuteReader();
                       


if(!myreader2.Read())
{Response.Write("没有检索到数据"+id1);
Conn.Close();
Conn.Open();
//mycommand.Parameters.Add("@子类号",SqlDbType.VarChar, 80).Value=id1.ToString();
mycommand.Parameters["@子类号"].Value=id1.ToString();
mycommand.ExecuteNonQuery(); Conn.Close();
}  else
{
Response.Write("检索到数据"+id1);

}

} }
}
}


代码如下 if(!IsPostBack)
{


Conn.Open();

sqlDataAdapter1.SelectCommand.Parameters["@实验号"].Value=Request.QueryString["id"];
sqlDataAdapter1.Fill(dsproject1);
DataGrid1.DataSource = dsproject1;
DataGrid1.DataBind();
Conn.Close();

}
else
{ int i;
for(i = 0; i <= DataGrid1.Items.Count -1 ; i++)
{
if (DataGrid1.Items[i].FindControl("check1") != null)
{
if (((CheckBox)DataGrid1.Items[i].FindControl("check1")).Checked)
{
       int id1 = int.Parse(((CheckBox)DataGrid1.Items[i].FindControl("check1")).Text);
Conn.Open();
commandhavedata.Parameters["@学号"].Value=(string)Session["student"].ToString();
commandhavedata.Parameters["@实验号"].Value=(string)Request.QueryString["id"];
SqlDataReader myreader1=commandhavedata.ExecuteReader();

if(!myreader1.Read())
{
commandcj.Parameters["@学号"].Value=(string)Session["student"].ToString();
commandcj.Parameters["@实验号"].Value=(string)Request.QueryString["id"];
commandcj.ExecuteNonQuery();
}     
   Conn.Close();
Conn.Open();
commandhavesub.Parameters["@学号"].Value=(string)Session["student"].ToString();
commandhavesub.Parameters["@子类号"].Value=id1.ToString();
SqlDataReader myreader2=commandhavesub.ExecuteReader();
                       


if(!myreader2.Read())
{Response.Write("没有检索到数据"+id1);
Conn.Close();
Conn.Open();
//mycommand.Parameters.Add("@子类号",SqlDbType.VarChar, 80).Value=id1.ToString();
mycommand.Parameters["@子类号"].Value=id1.ToString();
mycommand.ExecuteNonQuery(); Conn.Close();
}  else
{
Response.Write("检索到数据"+id1);

}

} }
}
}

解决方案 »

  1.   

    问题就出在调用上,按钮会刷新一遍页面,然后调用了page load,然后按钮本身在调用一次,这样走了两次,你再用断点跟踪以下,看是不是
      

  2.   

    我因为已经用语句检查过是否有记录在,
    但还是多插入了记录,
    是否是在每次调用的时候sqlcommand语句就已经积累了
    插入语句,
    如果是,
    是否可以调用sqlcommand的方法来释放插入语句,就想datagrid似的,
    或者还是有其他的原因