2012-12-15 58 views
0

當我嘗試插入數據庫時​​出現此錯誤。我已經檢查過這個尺寸是否足夠長,以及屬性是否合適。 這是我的SQL佈局。當插入新記錄時,獲取「字符串或二進制數據將被截斷。語句已被終止」

schoolID int (Primary Key) 
schoolNaam varchar(50) 
stad  varchar(30) 

我插入代碼:

BLSchool blSchool = new BLSchool(); 
List<School> scholen = blSchool.GetAll(); 
School school = new School(); 
school.SchoolNaam = schoolnaam.ToString(); 
school.Stad = schoolstad.ToString(); 
int schoolID = blSchool.InsertSchool(school); 
db.Schools.InsertOnSubmit(school); 
db.SubmitChanges(); 
return school.SchoolID; 
+0

這看起來不像傳統的ASP(VBScript或JScript)。 – webaware

回答

0

不,你沒有檢查大小或至少不正常。任一schoolnaam是超過50個字符長,或schoolstad超過30

爲了避免這種錯誤,有這樣的代碼:

school.SchoolNaam = new string(schoolnaam.ToString().Take(50).ToArray()); 
school.Stad = new string(schoolstad.ToString().Take(30).ToArray()); 

這將需要僅第一50/30字符的情況下的值更長。

+0

更好地使用輔助方法的子串。這實在是效率低下。 – usr

+0

@usr這是不添加擴展名或條件的最短路徑。我懷疑〜納秒差異是如此重要。 –

+0

謝謝隊友。使用這段代碼告訴我我做錯了什麼。我需要放置schoolnaam.Text才能使其工作。 愚蠢的錯誤。 – Trustos

0

字符串太長,你只是沒有發現問題。

也許你應該增加列長度。 A varchar需要儘可能多的空間。它不會浪費空間來增加尺寸。

您也可能應驗證客戶端上的字符串並向用戶顯示錯誤。

不要只是截斷它,因爲它會在不通知用戶的情況下銷燬數據。

相關問題