2013-02-07 49 views
-3

我试图通过LINQ实体将一些复选框选项添加到我的数据库作为一个项目。然而,我碰到的障碍是,我得到一个错误,试图将这些添加到一个变量添加到数据库。以下是我迄今为止:如何检索复选框选项并使用linq添加到数据库

public string GetSelectedItems(CheckBoxList control) 
    { 
     var items = new StringBuilder(); 

     foreach (ListItem item in chbxRoomChange.Items) 
     { 
      if (item.Selected) 
       items.Append(string.Format("{0},", item.Text)); 
     } 
     return items.ToString().TrimEnd(','); 
    } 

加入DB:

var choices = GetSelectedItems(chbxRoomChange); 
rc.preference = choices; 
+1

,什么是错误? –

+1

你得到的错误是什么? –

+0

System.Data.SqlClient.SqlException(0x80131904):字符串或二进制数据将被截断。该语句已终止。 System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection)在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()在System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader的dataStream,BulkCopySimpleResultSet BulkCopyHandler,TdsParserStateObject stateObj)在System.Data.SqlClient.SqlDataReader.ConsumeMetaData() – Paradigm

回答

0

基于你已经张贴然后我怀疑你是插入到数据库中的列是太小,无法容纳异常的详细信息您从应用程序传递的数据。

调试您的应用程序,看看GetSelectedItems返回的字符串是多长,然后将其与您要插入的列的大小进行比较。我怀疑你会发现你的字符串不合适,你需要增加它的大小。

作为一个侧面说明,你可以重写你的方法使用1线:

var choices = string.Join(",", chbxRoomChange.Items 
              .Cast<ListItem>() 
              .Where(li => li.Selected) 
              .Select(li => li.Text) 
              .ToArray()); 
相关问题