错误原因如题:
当数据更新的时候提示如题信息,不知错在那里,请各位高手指点,先谢谢了,更新的代码如下:string updateCmd = "UPDATE 员工信息表 SET 学号=@学号, 姓名 = @姓名, 性别 = @性别, 年龄 = @年龄,密码=@密码,员工类型=@员工类型";
SqlCommand myCommand=new SqlCommand(updateCmd,myConnection);myCommand.Parameters.Add(new SqlParameter("@学号",SqlDbType.Char,10));
myCommand.Parameters.Add(new SqlParameter("@姓名",SqlDbType.Char,8));
myCommand.Parameters.Add(new SqlParameter("@性别",SqlDbType.Char,2));
myCommand.Parameters.Add(new SqlParameter("@年龄",SqlDbType.Int,4));
myCommand.Parameters.Add(new SqlParameter("@密码",SqlDbType.VarChar,20));
myCommand.Parameters.Add(new SqlParameter("@员工类型",SqlDbType.Char,10));myCommand.Parameters["@学号"].Value = DataGrid1.DataKeys[e.Item.ItemIndex];
myCommand.Connection.Open();
try
{
myCommand.ExecuteNonQuery();
DataGrid1.EditItemIndex=-1;
}
catch
{
}
myCommand.Connection.Close();
BataGrid();
}
当数据更新的时候提示如题信息,不知错在那里,请各位高手指点,先谢谢了,更新的代码如下:string updateCmd = "UPDATE 员工信息表 SET 学号=@学号, 姓名 = @姓名, 性别 = @性别, 年龄 = @年龄,密码=@密码,员工类型=@员工类型";
SqlCommand myCommand=new SqlCommand(updateCmd,myConnection);myCommand.Parameters.Add(new SqlParameter("@学号",SqlDbType.Char,10));
myCommand.Parameters.Add(new SqlParameter("@姓名",SqlDbType.Char,8));
myCommand.Parameters.Add(new SqlParameter("@性别",SqlDbType.Char,2));
myCommand.Parameters.Add(new SqlParameter("@年龄",SqlDbType.Int,4));
myCommand.Parameters.Add(new SqlParameter("@密码",SqlDbType.VarChar,20));
myCommand.Parameters.Add(new SqlParameter("@员工类型",SqlDbType.Char,10));myCommand.Parameters["@学号"].Value = DataGrid1.DataKeys[e.Item.ItemIndex];
myCommand.Connection.Open();
try
{
myCommand.ExecuteNonQuery();
DataGrid1.EditItemIndex=-1;
}
catch
{
}
myCommand.Connection.Close();
BataGrid();
}
DataGrid1.DataKeys=....
2.Update一般需要配合where子句,否则所有记录都会更新
3.你的参数除了学号,其它都没有赋值
关键是错误提示是:索引超出范围。必须为非负值并小于集合大小。参数
这个参数怎么是0,请各位指点,谢谢
否则你可惨了你的Update语句竟然没有where子句
DataGrid1.DataKeyField="学号";
string strConn=ConfigurationSettings.AppSettings["dsn"];
SqlConnection cn=new SqlConnection(strConn);
string strsql="update users set UID=@uid,upassword=@password,uPower=@kind where id=@Userid";
SqlCommand cm=new SqlCommand(strsql,cn);SqlParameter parm1=new SqlParameter("@uid",SqlDbType.VarChar,50);
parm1.Value=((TextBox)e.Item.FindControl("UID")).Text;SqlParameter parm2=new SqlParameter("@password",SqlDbType.VarChar,50);
parm1.Value=((TextBox)e.Item.FindControl("upassword")).Text;SqlParameter parm3=new SqlParameter("@kind",SqlDbType.VarChar,50);
parm3.Value=((TextBox)e.Item.FindControl("uPower")).Text;
SqlParameter parm4=new SqlParameter("@Userid",SqlDbType.BigInt,8);
parm4.Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];
cm.Parameters.Add(parm1);
cm.Parameters.Add(parm2);
cm.Parameters.Add(parm3);
cm.Parameters.Add(parm4);cm.Connection.Open();
try
{
cm.ExecuteNonQuery();
Response.Write("<script language='javascript'> alert('数据更新成功')</script>");
}
catch
{
Response.Write("<script language='javascript'> alert('数据更新失败')</script>");
}
finally
{
DataGrid1.EditItemIndex=-1;
cm.Connection.Close();
BindGrid();
}
上述代码提示:未将对象引用设置到对象的实例。
parm1.Value=((TextBox)e.Item.FindControl("UID")).Text;
为什么?
该为 parm2.Value=((TextBox)e.Item.FindControl("upassword")).Text;