读书人

求教 将截断字符串或二进制数据。语句

发布时间: 2011-12-27 22:22:55 作者: rapoo

求教 将截断字符串或二进制数据。语句以终止.
今天在处理项目的时候出现了上述的话并且 报错信息为

C# code
“/gougouoa”应用程序中的服务器错误。--------------------------------------------将截断字符串或二进制数据。语句已终止。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 将截断字符串或二进制数据。语句已终止。源错误: 行 67:         cmd.CommandText = strSql;行 68:         cmd.Connection = conn;行 69:         cmd.ExecuteNonQuery();行 70:         //conn.Close(); 行 71:         //conn.Dispose();  源文件: d:\gougouoa\App_Code\WebService.cs    行: 69 堆栈跟踪: [SqlException (0x80131904): 将截断字符串或二进制数据。语句已终止。]   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +98   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +82   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +346   System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +3430   System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) +273   System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +367   System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +149   WebService.ExcuteSql(String strSql) in d:\gougouoa\App_Code\WebService.cs:69   guanli_guanlitree_qingjia.Button1_Click(Object sender, EventArgs e) in d:\gougouoa\guanli\guanlitree\qingjia.aspx.cs:33   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +96   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +116   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +31   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +72   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3825 --------------------------------------------版本信息: Microsoft .NET Framework 版本:2.0.50727.1433; ASP.NET 版本:2.0.50727.1433 

我在设置断点后发现输入TEXTBOX的字符串不能转换为SERTING 而是以下面这种形式出现 strsql=null
SQL code
insert into Absenteeisminfo(Name,Datetime,Date,Subject) values('System.Web.UI.WebControls.TextBox','System.Web.UI.WebControls.TextBox','System.Web.UI.WebControls.TextBox','System.Web.UI.WebControls.TextBox');

请问各位老师要怎么写才能把TEXTBOX的书写文本变成STRING 然后输入到库内那?
C# code
public partial class guanli_guanlitree_qingjia : System.Web.UI.Page{    //private string strSql = null;    WebService webs = new WebService();    protected void Page_Load(object sender, EventArgs e)    {    }    protected void Button2_Click(object sender, EventArgs e)    {        Response.Redirect("~/guanli/guanlitree/qingjia.aspxd");                                                                                                                                                                                                                                                                                                                                          }    protected void Button1_Click(object sender, EventArgs e)    {        if (Page.IsValid)        {            string strName = this.tbName.Text;            string strDatetime = this.tbDatetime.Text;            string strDate = this.tbDate.Text;            string strSubject = this.tbSubject.Text;            string strSql = "insert into Absenteeisminfo(Name,Datetime,Date,Subject) values('" + tbName + "','" + tbDatetime + "','" + tbDate + "','" + tbSubject + "');";            webs.ExcuteSql(strSql);            Response.Redirect("~/guanli/guanlitree/kuanggong.aspx");        }    }} 

上面是我书写的代码

[解决办法]
string strSql = "insert into Absenteeisminfo(Name,Datetime,Date,Subject) values('" + tbName + "','" + tbDatetime + "','" + tbDate + "','" + tbSubject + "');";
这个最后为什么有两个分号?打错了还是多打了?
[解决办法]
你要插入的数据长度大于你在数据库中设置的字段长度,当你insert时,将截断字符串、请核查每个字段的长度。把SQL放入查询分析器中执行。会发现错误!
[解决办法]
出现这个错误,很多时候是因为你的要插入的某个字符串的长度超出了数据库表中字段定义的长度,
也就是Textbox中输入的字符串的长度超过了对应字段定义的长度,检查一下
[解决办法]
还有出现这个错误

将截断字符串或二进制数据。
语句已终止。


一般都是你插入数据库的字符长度超出你数据库字段的长度。
你先看下要插入的字符串的长度是否超出Name,Datetime,Date,Subject这几个字段的长度
[解决办法]
SQL语句拼错了,改成
strSql = "insert into Absenteeisminfo(Name,Datetime,Date,Subject) values('" + strName + "','" + strDatetime + "','" + strDate + "','" + strSubject + "');";

读书人网 >C#

热点推荐