【问题标题】:An error occurred while updating the entries. See the inner exception for details. Save changes problem更新条目时出错。有关详细信息,请参阅内部异常。保存更改问题
【发布时间】:2021-05-01 05:26:33
【问题描述】:

这是我的课程代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Student_InfoFORM
{
    public partial class tblStudentform
    {
        public static void createStudentform(string idno, string fname, string mname, string lname, string add, string email)
        {
            Student_InfoFORM.studentFormEntities container = new Student_InfoFORM.studentFormEntities();

            tblStudentform std = new tblStudentform
            {
                stud_id = idno,
                firstname = fname,
                midname = mname,
                lastname = lname,
                address = add,
                emailadd = email
            };

            container.tblStudentforms.AddObject(std);
            container.SaveChanges();
        }
    }
}

这是来自SaveChanges() 电话的消息:

更新条目时出错。有关详细信息,请参阅内部异常。

这是每次我保存在我的应用程序中输入的数据时的内部异常:

System.Data.UpdateException 未被用户代码处理
HResult=-2146233087
Message=更新条目时发生错误。有关详细信息,请参阅内部异常。
Source=System.Data.Entity

堆栈跟踪:
在 System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter 适配器)
在 System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
在 System.Data.Objects.ObjectContext.SaveChanges(SaveOptions 选项)
在 System.Data.Objects.ObjectContext.SaveChanges()
在 C:\Users\admin2\Documents\Visual Studio 2010\Projects\Student_InfoFORM\Student_InfoFORM\tblStudentform.cs:line 中的 Student_InfoFORM.tblStudentform.createStudentform(String idno, String fname, String mname, String lname, String add, String email) 24
在 C:\Users\admin2\Documents\Visual Studio 2010\Projects\Student_InfoFORM\Student_InfoFORM\Default.aspx.cs:line 19 中的 Student_InfoFORM._Default.Button1_Click(Object sender, EventArgs e) 在 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
在 System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串 eventArgument)
在 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument)
在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) 在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

内部异常:System.Data.SqlClient.SqlException
HResult=-2146232060
Message=String 或二进制数据将被截断。声明已终止。
Source=.Net SqlClient 数据提供者
错误代码=-2146232060
类=16 行号=1 号=8152
过程=""服务器=\SQLEXPRESSState=14

堆栈跟踪:
在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection,Action1 wrapCloseInAction)at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布尔 callerHasConnectionLock,布尔 asyncClose)在 System.Data.SqlClient .TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean&dataReady)在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString,Boolean isInternal,Boolean forDescribeParameterEncryption,Boolean shouldCacheForAlwaysEncrypted) 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task & task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) 在 System.Data.SqlCli ent.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String 方法,TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 完成,String methodName,Boolean sendToPipe,Int32 超时,Boolean& usedCache,Boolean asyncWrite,Boolean inRetry)在 System.Data.SqlClient。 SqlCommand.ExecuteNonQuery() at System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator 转换器,EntityConnection 连接,Dictionary2 identifierValues, List1 generatedValues) at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager , IEntityAdapter 适配器)InnerException:

【问题讨论】:

  • 当您的字段大小小于您尝试插入的值时,将出现截断的字符串或二进制数据。数据库中的字符串大小之一小于您传递的大小
  • 是的。当浏览器停止加载时,它也会显示在浏览器中。
  • 我该如何解决?
  • 检查数据库中哪个字段大小较小。一些 varchar(100) 可能会增加或减少代码输入
  • 谢谢! varchar 的工作方式与我之前放置的 char 不同。

标签: c# sql-server-2008 visual-studio-2010


【解决方案1】:

错误意味着您传递了错误的类型或对于当前列来说太大的数据。我建议在可用于字符串的情况下使用 nvarchar。如果您需要更改可以使用的列大小

ALTER TABLE TableName
ALTER COLUMN ColumnName TypeName(Size)

【讨论】:

  • 谢谢!这是更好的解决方案。
  • 我遇到了类似的问题,但它停在 DBContext.SaveChanges();我不知道为什么会这样做
猜你喜欢
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多