Chia sẻ lập trình
Chuyễn lỗi lập trình,các bài viết giúp sửa lỗi lập trình.Những lỗi không đáng có.
Object reference not set to an instance of an object - trong lập trình C#
Posted by Unknown at 1:59 AM rong quá trình code của các chúng ta đã không it lần gặp thông báo lỗi trên. Hôm nay mình mở ra mục này với mục đích chia sẻ kinh nghiệm của mình đồng thời kêu gọi mọi người bổ xung cùng nhằm giúp đỡ các bạn đi sau đỡ bị mắc phải hơn.
1.Lỗi chưa khởi tạo đối tượng (Lỗi này rất phổ biến).Ví dụ các bạn chỉ khai báo như sau. ?
| 1 2 3 | List<string> lst; // Tương tự khai báo ArrayList cũng bị lỗi như thế //Sau đó sử dụng biến arr để thêm các đối tượng vào mảng. lst.Add("test");//Tại đây chương trình sẽ thông báo lỗi |
Cách giải quyết lỗi trên là các bạn phải new(khởi tạo đối tượng) ?
| 1 | List<string> lst = new List<string>(); |
2.Lỗi về duyệt từng dòng trong DataTable, DataGridView , ... hoặc một danh sách bất kỳCác bạn duyệt từng dòng trong DataTable bằng vòng lặp For như sau sẽ bị lỗi. ?
| 1 2 | for (int i = 0; i <= table.Rows.Count ; i++) //Và lấy giá trị của dòng thứ i để làm việc gì đó, thì tại đây nó sẽ bị lỗi. |
Cách giải quyết là trong lúc duyệt thì bạn chỉ được duyệt với số lượng Row Count - 1 mà thôi.
3.Lấy giá trị trả về từ CSDL bằng phương thức ExecuteScalar. ?
| 1 2 3 4 | SqlConnection con = this.GetCon(); con.Open(); SqlCommand cmd = new SqlCommand("SELECT ID FROM TABLENAME1 WHERE ID = 1235687", con); string s =cmd.ExecuteScalar().ToString();//Chương trình sẽ báo lỗi tại đây |
Với trường hợp này thì bạn hãy kiểm trả câu truy vấn xem có giá trị trả về không?Như ở trên thì với điểu kiện ID = 1235687 thì không có record nào thỏa mãn điều kiện. 4.Lỗi khi đỗ dữ liệu vào DataSet. ?
| 1 2 3 4 5 6 7 8 | SqlConnection con = this.GetCon(); con.Open(); SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM TONG_QUAT",con); DataSet ds = new DataSet(); da.Fill(ds,"table"); DataTable table = ds.Tables["test"];//Tại đây biến table có giá trị là null vì ko thấy Table nào có tên là "test". //Và chương trình sẽ báo lỗi khi bạn dùng biến table để làm việc gì đó. int count = table.Rows.Count;//Báo lỗi ở đây |
Cách giải quyết vấn đề trên:- Kiểm tra câu truy vấn có record nào trả về hay không?- Nếu các bạn dùng DataSet thì lúc Fill và DataSet nếu có đặt tên cho Table thì phải nhớ.Nếu không nhớ nữa thì gán vào DataTable như sau: ?
| 1 | DataTable table = ds.Tables[0]; |
5.Khi bạn tương tác với Registry. Và các bạn muốn lấy (Get) hoặc gán (Set) giá trị nào đó cho 1 key trong Registry:Nếu gặp lỗi như trên thì bạn hãy kiểm tra lại đường dẫn đến khóa đó xem có đúng không.Hoặc xem lại cái key của bạn muốn lấy giá trị xem có tồn tại không.
6.Nếu 1 đối tượng đang là NULL mà dùng phương thức ToString() để lấy giá trị của nó thì sẽ gặp lỗi như trên. Do bạn khai báo một biến có thể là array, string, datable, hashtable, hoặc một đối tượng classmà những biến này mình chưa new nó thì default sẽ là nullnên cách tốt nhất là khi mình khai báo một kiểu dữ liệu nào đó thì bạn nên1. gán default cho biến đóex: string strPass = String.Empty() or string strPass = ""int intNo = 0Datatable dtTemp = null nếu là datatable thì nên gán bằng null lý dó là nếu bạn chưa sử dụng thì đừng bao gời new Datatable() nhé tốn bộ nhớ Nếu bạn muốn gán dữ liệu cho nó thì kiểm tra trước khi gắn thì ko bao gời bị lỗi
7. Lỗi không tìm thấy thẻ trong control asp.net khi dùng phương thức FindControl(id)Khắc phục: kiểm tra lại id, hoặc bạn tìm sai chỗ Trong ứng dụng của bạn có đọc giá trị từ file config cũng bị lỗi như vậy ?
| 1 | string val = ConfigurationManager.AppSettings["NameOfConfig"] // Lỗi ở đây |
Để tránh những lỗi như thế này thì cũng ko khó và ko dễ chủ yếu là do mình viết từng đoạn code mà thôi, cái này phụ thuộc vào kinh nghiệm của mỗi người. Labels: Lỗi lập trình C# Email This BlogThis! Share to X Share to Facebook
Home
Có Thể Bạn Quan Tâm
- Object reference not set to an instance of an object - trong lập trình C#
- Các lỗi trong lập trình C
- Lỗi chỉ hiển thị dòng đầu tiên các bản ghi trong xtra Report
-
hướng dẫn enable sql management studio express 2008 -
Lỗi không Connect được tới CSDL trong SQL Server - Login failed for user 'an' - this document does not contain any pages
-
Lỗi localhost trong webservice c#.Windows 8 -
Lỗi và sửa lý ngoại lệ trong C# – Exceptions and Exception Handling in C# -
Lỗi không thấy "Earning" trên Blogger
Nhãn Tìm Kiếm
- Lỗi lập trình Blogger
- Lỗi lập trình C
- Lỗi lập trình C#
- Lỗi lập trình SQLServer
Blog Archive
- ▼ 2014 (9)
- ▼ May (9)
- Lỗi chỉ hiển thị dòng đầu tiên các bản ghi trong x...
- this document does not contain any pages
- Lỗi không thấy "Earning" trên Blogger
- Lỗi và sửa lý ngoại lệ trong C# – Exceptions and E...
- hướng dẫn enable sql management studio express 2008
- Lỗi không Connect được tới CSDL trong SQL Server -...
- Lỗi localhost trong webservice c#.Windows 8
- Object reference not set to an instance of an obje...
- Các lỗi trong lập trình C
About Me
Unknown View my complete profile Powered by Blogger. Copyright © Chia sẻ lập trình Design by vanthuyIT