วิธีแก้ String must be exactly one character long
กุมภาพันธ์ 4, 2009 ใส่ความเห็น
วิธีแก้ String must be exactly one character long
วันนี้ผู้เขียนขอแทรกเรื่องที่ไม่เกี่ยวกับโพสต่อเนื่องอื่นๆ (ช่วงนี้กำลังโพสเนื้อหาบางส่วนในหนังสือ เรียนรู้ด้วยตนเอง DataBase – Query – T-SQL – Stored Procedure ให้ท่านอ่านฟรี) ด้วยเรื่องวิธีแก้ไขเออเรอร์ที่เกิดตอนคอมไพล์ที่ผู้เขียนพบในวันนี้ เกลือกว่าท่านเจอปัญหาอย่างเดียวกันแล้วท่านบังเอิญ Google มาพบเข้าอาจช่วยแก้ปัญหาได้ ข้อความที่เป็นชื่อตอนคือเออเรอร์เมสเซจ (Error Message ย่อ EM) ที่โปรแกรม Visual Studio 2008 (VS2008) แสดงเมื่อผู้เขียนรันโปรแกรม โค้ดส่วนที่เกิด EM คือเมธอดนี้ private void GetRowsFromDatabase(int projectID) { LoySQLtoLINQDataContext myDB = new LoySQLtoLINQDataContext(); var readSec1 = from r in myDB.Section1s where r.ProjectID == projectID && r.SectionID == 1 orderby r.TopicOrder select r; string a, b, c, d, e, f; foreach (var v in readSec1) { this.projectID = v.ProjectID.ToString(); a = v.TopicOrder.ToString(); b = v.Comment.ToString(); c = v.Name.ToString(); d = v.Size.ToString(); e = v.TopicType.ToString(); f = v.Mandatory.ToString(); string[] s = { a, b, c, d, e, f }; myList.Add(s); } } นี่คือเมธอดภาษา C# ทำหน้าที่คิวรีข้อมูลจากตารางมาใส่ไว้ในลิงค์ลิสต์ เมื่อคอมไพล์ VS2008 แสดง EM ในบรรทัด foreach ซึ่งก่อนหน้านี้เคยทำงานได้อย่างปรกติ เรื่องนี้ทำให้ผู้เขียนงงอยู่พักใหญ่ สืบสาวราวเรื่องพบว่าสาเหตุเกิดจากผู้เขียนแก้ไขโครงสร้างของตาราง แต่ลืมแก้ O/RM โดยผู้เขียนมีตารางหน้าตาดังนี้
[Column(Storage="_Mandatory", DbType="VarChar(1)")] ปัญหาคือตรงนี้แหละครับ ถ้าเปลี่ยนเป็น Varchar(10) เสียก็จบ
|