请教高手一个有关数据库更新的问题 你的新 行 内容 是否 符合 sql 里面的字段设置有没有空 字段 看看 表里 的字段 容许为 空不!直接在sql 里面执行 你的 插入语句 看有没有错! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 多贴两句嘛我们怎么知道GetUpdateCommand是什么CustomerData.CUSTOMERS_TABLE又是什么? private SqlCommand GetUpdateCommand(){if ( UpdateCommand == null ){UpdateCommand=new SqlCommand("updateCustomer",new SqlConnection(appConfig.GetConnectString()));UpdateCommand.CommandType=CommandType.StoredProcedure;//添加参数信息SqlParameterCollection SqlParams = UpdateCommand.Parameters;SqlParams.Add(new SqlParameter ID_PARM,SqlDbType.Int,CustomerData.ID_FIELD_LENGTH)); SqlParams.Add(new SqlParameter(USERNAME_PARM, SqlDbType.NVarChar,CustomerData.USERNAME_FIELD_LENGTH));SqlParams.Add(new SqlParameter(PASSWORD_PARM, SqlDbType.NVarChar , CustomerData.PASSWORD_FIELD_LENGTH));SqlParams.Add(new SqlParameter(NAME_PARM, SqlDbType.NVarChar , CustomerData.NAME_FIELD_LENGTH));SqlParams.Add(new SqlParameter(EMAIL_PARM, SqlDbType.NVarChar , CustomerData.EMAIL_FIELD_LENGTH));SqlParams.Add(new SqlParameter(SEX_PARM, SqlDbType.NVarChar, CustomerData.SEX_FIELD_LENGTH));SqlParams.Add(new SqlParameter(BIRTHDAY_PARM, SqlDbType.DateTime ,CustomerData.BIRTHDAY_FIELD_LENGTH));SqlParams.Add(new SqlParameter(ADDRESS_PARM, SqlDbType.NVarChar , CustomerData.ADDRESS_FIELD_LENGTH));SqlParams.Add(new SqlParameter(PHONE_PARM, SqlDbType.NVarChar , CustomerData.PHONE_FIELD_LENGTH)); //将参数映射到数据表SqlParams[ID_PARM].SourceColumn=CustomerData.ID_FIELD;SqlParams[ID_PARM].SourceVersion=DataRowVersion.Original; SqlParams[USERNAME_PARM].SourceColumn=CustomerData.USERNAME_FIELD;SqlParams[USERNAME_PARM].SourceVersion=DataRowVersion.Original;SqlParams[PASSWORD_PARM].SourceColumn = CustomerData.PASSWORD_FIELD;SqlParams[NAME_PARM].SourceColumn = CustomerData.NAME_FIELD; SqlParams[EMAIL_PARM].SourceColumn = CustomerData.EMAIL_FIELD;SqlParams[SEX_PARM].SourceColumn = CustomerData.SEX_FIELD;SqlParams[BIRTHDAY_PARM].SourceColumn = CustomerData.BIRTHDAY_FIELD; SqlParams[ADDRESS_PARM].SourceColumn = CustomerData.ADDRESS_FIELD; SqlParams[PHONE_PARM].SourceColumn = CustomerData.PHONE_FIELD; } return UpdateCommand;} SQL语句用的是存储过程,存储过程语法没问题,语句也没错,没有空的参数引用。在查询分析器上执行更新命令(参数替换成数据)结果正确。 是否在其它地方对该Dataset插入了新行。 实际上楼主的问题很简单啊,程序执行没有错误,是概念理解上的偏差!楼主自己也说是更新具有新行的datarow,既然添加了新行,那么调用dsCommand的update命令,当然会去执行其中的insert命令拉!!!!添加了新行,对应数据库更新的话,就是执行insert命令啊,所以程序没有问题.楼主做相应的调整即可;而楼主总是在设置dsCommand的UpdateCommand属性,这只能执行更新操作,即修改了某一行的数据;另外还要增加一个commandbuilder类的实例,更新才会起作用 微软企业库中的创建数据库连接中的计数的作用? C#滚动字幕 如何分割数组里面的字符串? COMBOBOX中选择各个项目的条件语句,帮帮修改下 为什么我的字体大小改变了 求助,安装消息队列失败 如何获得色彩的近似值 C# Excel 2007 导出问题 分组后怎么运算呀。 填充dataset 求Crystal Reports for .NET 电子版!! 招聘技术专家
我们怎么知道GetUpdateCommand是什么
CustomerData.CUSTOMERS_TABLE又是什么?
{
if ( UpdateCommand == null )
{
UpdateCommand=new SqlCommand("updateCustomer",new SqlConnection(appConfig.GetConnectString()));UpdateCommand.CommandType=CommandType.StoredProcedure;//添加参数信息
SqlParameterCollection SqlParams = UpdateCommand.Parameters;SqlParams.Add(new SqlParameter ID_PARM,SqlDbType.Int,CustomerData.ID_FIELD_LENGTH));
SqlParams.Add(new SqlParameter(USERNAME_PARM, SqlDbType.NVarChar,CustomerData.USERNAME_FIELD_LENGTH));SqlParams.Add(new SqlParameter(PASSWORD_PARM, SqlDbType.NVarChar , CustomerData.PASSWORD_FIELD_LENGTH));SqlParams.Add(new SqlParameter(NAME_PARM, SqlDbType.NVarChar , CustomerData.NAME_FIELD_LENGTH));SqlParams.Add(new SqlParameter(EMAIL_PARM, SqlDbType.NVarChar , CustomerData.EMAIL_FIELD_LENGTH));SqlParams.Add(new SqlParameter(SEX_PARM, SqlDbType.NVarChar, CustomerData.SEX_FIELD_LENGTH));SqlParams.Add(new SqlParameter(BIRTHDAY_PARM, SqlDbType.DateTime ,CustomerData.BIRTHDAY_FIELD_LENGTH));SqlParams.Add(new SqlParameter(ADDRESS_PARM, SqlDbType.NVarChar , CustomerData.ADDRESS_FIELD_LENGTH));SqlParams.Add(new SqlParameter(PHONE_PARM, SqlDbType.NVarChar , CustomerData.PHONE_FIELD_LENGTH));
//将参数映射到数据表SqlParams[ID_PARM].SourceColumn=CustomerData.ID_FIELD;SqlParams[ID_PARM].SourceVersion=DataRowVersion.Original;
SqlParams[USERNAME_PARM].SourceColumn=CustomerData.USERNAME_FIELD;SqlParams[USERNAME_PARM].SourceVersion=DataRowVersion.Original;SqlParams[PASSWORD_PARM].SourceColumn = CustomerData.PASSWORD_FIELD;SqlParams[NAME_PARM].SourceColumn = CustomerData.NAME_FIELD; SqlParams[EMAIL_PARM].SourceColumn = CustomerData.EMAIL_FIELD;SqlParams[SEX_PARM].SourceColumn = CustomerData.SEX_FIELD;SqlParams[BIRTHDAY_PARM].SourceColumn = CustomerData.BIRTHDAY_FIELD;
SqlParams[ADDRESS_PARM].SourceColumn = CustomerData.ADDRESS_FIELD;
SqlParams[PHONE_PARM].SourceColumn = CustomerData.PHONE_FIELD;
}
return UpdateCommand;
}
在查询分析器上执行更新命令(参数替换成数据)结果正确。
添加了新行,对应数据库更新的话,就是执行insert命令啊,所以程序没有问题.楼主做相应的调整即可;
而楼主总是在设置dsCommand的UpdateCommand属性,这只能执行更新操作,即修改了某一行的数据;另外还要增加一个commandbuilder类的实例,更新才会起作用