DATAGRID更新数据库的怪问题。寻求解决。

menghui1 2003-05-21 06:32:10
有一个奇怪问题,datagrid只有第一行可以正常更新,其余行都报错。错误信息如下:

System.FormatException: 输入字符串的格式不正确。

源错误:


行 120: try
行 121: {
行 122: myCommand.ExecuteNonQuery();
行 123: Message.InnerHtml = "<b>已更新记录</b><br>" + updateCmd;
行 124: DataGrid1.EditItemIndex = -1;


源文件: E:\dbserver\jhgl.aspx 行: 122

public void DataGrid1_Update(Object sender, DataGridCommandEventArgs e)
{

String updateCmd = "UPDATE temp SET id=@id,分类代码= @fldm, 统一编号 = @tybh, 分类编号 = @flbh, 名称 = @mc,型号=@xh, 测量范围 =@clfw, 准确度=@zqd, 生产厂家=@sccj, "
+ "出厂编号 = @ccbh, 出厂日期 = @ccrq, 使用部门 = @sybm, 使用人 = @syr, 管理状态 = @glzt, 检定部门=@jdbm, 检定周期=@jdzq, 检定日期=@jdrq, 有效日期=@yxrq,"
+ "检定结果=@jdjg,周检档案=@zjda,备注=@bz, 使用地点=@sydd,数量=@sl,提交日期=@tjrq,审核=@sh,更新标志=@gxbz where id = @id";

SqlCommand myCommand = new SqlCommand(updateCmd, myConnection);

myCommand.Parameters.Add(new SqlParameter("@id", SqlDbType.NVarChar,4));
myCommand.Parameters.Add(new SqlParameter("@fldm", SqlDbType.NChar, 10));
myCommand.Parameters.Add(new SqlParameter("@tybh", SqlDbType.NChar, 8));
myCommand.Parameters.Add(new SqlParameter("@flbh", SqlDbType.NChar, 3));
myCommand.Parameters.Add(new SqlParameter("@mc", SqlDbType.NChar, 20));
myCommand.Parameters.Add(new SqlParameter("@xh", SqlDbType.NChar, 12));
myCommand.Parameters.Add(new SqlParameter("@clfw", SqlDbType.NChar, 22));
myCommand.Parameters.Add(new SqlParameter("@zqd", SqlDbType.NChar, 10));
myCommand.Parameters.Add(new SqlParameter("@sccj", SqlDbType.NChar, 16));
myCommand.Parameters.Add(new SqlParameter("@ccbh", SqlDbType.NChar,10));
myCommand.Parameters.Add(new SqlParameter("@ccrq", SqlDbType.NChar,4));
myCommand.Parameters.Add(new SqlParameter("@sybm", SqlDbType.NChar,2));
myCommand.Parameters.Add(new SqlParameter("@syr", SqlDbType.NChar,8));
myCommand.Parameters.Add(new SqlParameter("@glzt", SqlDbType.NChar,2));
myCommand.Parameters.Add(new SqlParameter("@jdbm", SqlDbType.NChar,2));
myCommand.Parameters.Add(new SqlParameter("@jdzq", SqlDbType.Int,4));
myCommand.Parameters.Add(new SqlParameter("@jdrq", SqlDbType.NChar,6));
myCommand.Parameters.Add(new SqlParameter("@yxrq", SqlDbType.NChar,6));
myCommand.Parameters.Add(new SqlParameter("@jdjg", SqlDbType.NChar,2));
myCommand.Parameters.Add(new SqlParameter("@zjda", SqlDbType.NChar,4));
//myCommand.Parameters.Add(new SqlParameter("@abc", SqlDbType.NChar,1));
myCommand.Parameters.Add(new SqlParameter("@bz", SqlDbType.NChar,30));
myCommand.Parameters.Add(new SqlParameter("@sydd", SqlDbType.NChar,18));
myCommand.Parameters.Add(new SqlParameter("@sl", SqlDbType.Int,4));
myCommand.Parameters.Add(new SqlParameter("@tjrq", SqlDbType.NChar,10));
myCommand.Parameters.Add(new SqlParameter("@sh", SqlDbType.NChar,16));
myCommand.Parameters.Add(new SqlParameter("@gxbz", SqlDbType.NChar,10));

myCommand.Parameters["@id"].Value = DataGrid1.DataKeys[(int)e.Item.ItemIndex];

String[] cols = {"@id","@fldm","@tybh","@flbh", "@mc", "@xh","@clfw","@zqd","@sccj","@ccbh","@ccrq","@sybm","@syr", "@glzt", "@jdbm","@jdzq","@jdrq", "@yxrq","@yxrq","@jdjg","@zjda","@bz","@sydd","@sl","@tjrq","@sh","@gxbz"};

int numCols = e.Item.Cells.Count;
for (int i=3; i<numCols; i++)
{
String colvalue =((TextBox)e.Item.Cells[i].Controls[0]).Text;

myCommand.Parameters[cols[i-2]].Value = colvalue;
}


myCommand.Connection.Open();

try
{
myCommand.ExecuteNonQuery();
Message.InnerHtml = "<b>已更新记录</b><br>" + updateCmd;
DataGrid1.EditItemIndex = -1;
}
catch (SqlException exc)
{
if (exc.Number == 2627)
Message.InnerHtml = "错误:已存在具有相同主键的记录";
else
Message.InnerHtml = "错误:未能更新记录,请确保正确填写了字段";
Message.Style["color"] = "red";
}

myCommand.Connection.Close();

retrunview();
DataGrid1.DataSource = result;
DataGrid1.DataBind();
}
...全文
40 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mongtze 2003-05-21
  • 打赏
  • 举报
回复
我一般都是这样组织的:

private void dg_Bind(){
//数据窗口绑定数据的函数
}

private void DataGrid_UpdateCommand(src,e)
{
// 这里初始化几个对象
... ...

try{
myConnection.Open();
myCommand.ExecuteNonQuery();
DataGrid1.EditItemIndex = -1;
dg_Bind();
}
catch (){
... ...
}
finally{
myConnection.Close();
}
}
menghui1 2003-05-21
  • 打赏
  • 举报
回复
谢谢回复,问题是修改第一航字段都可以,其他就不行,是什么原因?在线等
luckysusan 2003-05-21
  • 打赏
  • 举报
回复

调试检查一下你update语句

应该是哪个值与数据库定义的类型不一致!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧