字符串或二进制数据将被截断(SQL异常) [英] string or binary data would be truncated (SQL exception)

查看:93
本文介绍了字符串或二进制数据将被截断(SQL异常)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码



  protected   void  EMPLOYEERECORD_RowCommand( object  sender,GridViewCommandEventArgs e)
{

if (e.CommandName.Equals( ADD) )
{
DropDownList drpDepartment =(DropDownList)EMPLOYEERECORD.FooterRow.FindControl( drpDepartment< /跨度>);
DropDownList DropDownList1 =(DropDownList)EMPLOYEERECORD.FooterRow.FindControl( DropDownList1);
DropDownList drpCategory =(DropDownList)EMPLOYEERECORD.FooterRow.FindControl( drpCategory);
TextBox txtAddRemarks =(TextBox)EMPLOYEERECORD.FooterRow.FindControl( txtAddRemarks);
DropDownList drpStatus =(DropDownList)EMPLOYEERECORD.FooterRow.FindControl( drpStatus);


DatabaseModule.SQcon.Open();
string cmdstr = 插入dbo。 RecordEmployee(DATE_REPORTED,EMPLOYEE_NAME,DEPARTMENT,CATEGORY,REMARKS,TIME_IN,TIME_OUT,EMP_STATUS)值(@dReported,@ empname,@ department,@ category,@ remarks,@ tIN,@ tOUT,@ status];
SqlCommand cmd = new SqlCommand(cmdstr,DatabaseModule.SQcon);
cmd.Parameters.AddWithValue( @ dReported,DateTime.Now.ToString() );
cmd.Parameters.AddWithValue( @ empname,DropDownList1.SelectedValue.ToString() );
cmd.Parameters.AddWithValue( @ department,drpDepartment.SelectedValue.ToString() );
cmd.Parameters.AddWithValue( @ category,drpCategory.SelectedValue.ToString() );
cmd.Parameters.AddWithValue( @ remarks,txtAddRemarks.Text);
cmd.Parameters.AddWithValue( @ tIN,DateTime.Now.ToString() );
cmd.Parameters.AddWithValue( @ tOut );
cmd.Parameters.AddWithValue( @ status,drpStatus.SelectedValue.ToString() );
cmd.ExecuteNonQuery();
DatabaseModule.SQcon.Close();
BindData();
}
}







这是我的数据库表:



 create table dbo.RecordEmployee(DATE_REPORTED datetime主键,EMPLOYEE_NAME varchar( 50 )NOT NULL,
DEPARTMENT varchar( 40 )NOT NULL,
CATEGORY varchar( 20 )NOT NULL,REMARKS varchar( 100 ),TIME_IN datetime NOT NULL,
TIME_OUT datetime,EMP_STATUS varchar( 20 )NOT NULL)





如何继续获得异常,请帮助

解决方案

当输入的数据无法容纳在一个或多个表列中时,会发生此异常。您需要使用断点验证输入。如果您安装了sql profiler,那么您可以捕获查询,然后确定哪个列导致溢出。一切顺利。


检查RecordEmployee表的表结构。我想你会发现一个或多个字段的长度不足以容纳你想要插入的数据。例如,如果CATEGORY字段是varchar(20)字段,并且您尝试将21个以上字符添加到其中,则会出现此错误。

以供进一步参考:

http://www.aspdotnet-suresh .com / 2012/09 / sql-string-or-binary-data-would-be.html [ ^ ]


请检查您的数据类型长度。









不合适...... ............





可能是插入字段在数据库或副中定义的更长反之亦然.....

here is my code

protected void EMPLOYEERECORD_RowCommand(object sender, GridViewCommandEventArgs e)
        {

            if (e.CommandName.Equals("ADD"))
            {
                DropDownList drpDepartment = (DropDownList)EMPLOYEERECORD.FooterRow.FindControl("drpDepartment");
                DropDownList DropDownList1 = (DropDownList)EMPLOYEERECORD.FooterRow.FindControl("DropDownList1");
                DropDownList drpCategory = (DropDownList)EMPLOYEERECORD.FooterRow.FindControl("drpCategory");
                TextBox txtAddRemarks = (TextBox)EMPLOYEERECORD.FooterRow.FindControl("txtAddRemarks");
                DropDownList drpStatus = (DropDownList)EMPLOYEERECORD.FooterRow.FindControl("drpStatus");


                DatabaseModule.SQcon.Open();
                string cmdstr = "insert into dbo.RecordEmployee (DATE_REPORTED, EMPLOYEE_NAME, DEPARTMENT, CATEGORY, REMARKS, TIME_IN,  TIME_OUT, EMP_STATUS) values(@dReported, @empname,@department,@category,@remarks,@tIN, @tOUT, @status)";
                SqlCommand cmd = new SqlCommand(cmdstr, DatabaseModule.SQcon);
                cmd.Parameters.AddWithValue("@dReported", DateTime.Now.ToString());
                cmd.Parameters.AddWithValue("@empname", DropDownList1.SelectedValue.ToString());
                cmd.Parameters.AddWithValue("@department", drpDepartment.SelectedValue.ToString());
                cmd.Parameters.AddWithValue("@category",drpCategory.SelectedValue.ToString());
                cmd.Parameters.AddWithValue("@remarks", txtAddRemarks.Text);
                cmd.Parameters.AddWithValue("@tIN", DateTime.Now.ToString());
                cmd.Parameters.AddWithValue("@tOut", "");
                cmd.Parameters.AddWithValue("@status", drpStatus.SelectedValue.ToString());
                cmd.ExecuteNonQuery();
                DatabaseModule.SQcon.Close();
                BindData();
            }  
        }




and here is my database table:

create table dbo.RecordEmployee (DATE_REPORTED datetime primary key, EMPLOYEE_NAME varchar(50) NOT NULL,
                           DEPARTMENT varchar(40) NOT NULL,
                           CATEGORY varchar(20)NOT NULL, REMARKS varchar(100), TIME_IN datetime NOT NULL,
                           TIME_OUT datetime, EMP_STATUS varchar (20) NOT NULL)



how ever I keep on getting an exception, help please

解决方案

This exception occurs when the entered data cannot be accommodated in one or more table column's. You need to verify the input using the break point. If you sql profiler installed then you could capture the query and then figure which column is causing the overflow. All the best.


Check the table structure for the RecordEmployee table. I think you'll find that the length of one or more fields is NOT big enough to hold the data you are trying to insert. For example, if the CATEGORY field is a varchar(20) field, and you try to put 21+ characters in to it, you will get this error.
for further reference :
http://www.aspdotnet-suresh.com/2012/09/sql-string-or-binary-data-would-be.html[^]


Please check yours data type length.




its not match properly..................


may be insert field heaving more length as you define in database or vice versa.....


这篇关于字符串或二进制数据将被截断(SQL异常)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆