01/10/2018, 11:15
Làm thế nào để đọc, ghi file như một Database?
Chào mọi người.
Có ai biết làm thế nào để đọc, ghi file, giống nhưng một database bằng code, hay framework gì không chỉ mình với.
Ghi file như một Database có nghĩa là: Vd: như sửa một dòng trong file thì chỉ sửa dòng đó chứ không dọc hết file đó ra xong sửa, xong ghi đè dữ liệu vào file cũ
Cảm ơn.
Bài liên quan
Seek đến vị trí của row đó rồi replace thôi.
Một file không thôi, bản thân nó không cung cấp phương tiện/ cách thức để một chương trình đọc file biết “dòng cần sửa là dòng nào” nếu bạn không đọc tuần tự thì file bạn phải được sắp xếp theo trật tự nào đó (hoặc lập chỉ mục index) để định vị và nhảy ngay đến dòng N.
Do đó, không thể thực hiện được như cách vừa hỏi với một file bất kỳ, mà bản chất là phải đọc tuần tự lên, ghi ra file mới rồi xoá file cũ nếu không muốn ghi đè vào dữ liệu cũ.
Chính vì lý do như trên, người ta mới phải đẻ ra database để cung cấp phương tiện cho việc đọc / ghi thuận tiện hơn.
Bạn có thể chọn SQLite, nó cũng là database nhưng ở dạng file (.db, .sqlite,…) Nhiều Language hỗ trợ SQLite
SQLite không cần attach vào db server, connectiong string chỉ cần trỏ đường dẫn file theo kiểu
Trong C# winforms, bạn dùng BindingDataSource là có thể đáp ứng các yêu cầu của bạn.
Bạn cần tạo một lớp DAO (Data Access Object) gồm các thuộc tính của đối tượng bạn muốn lưu ra file, sau đó gán các giá trị cho các thuộc tính đó. File lưu lại các thuộc tính dưới dạng XML, và khi đọc, thêm, sửa, xóa nó sẽ làm việc với file xml đó bằng việc map các thuộc tính của đối tượng và trong file.
Ví dụ về class và file .xml mình nói trong bài:
File .cs:
File xml:
Tất cả đều đồng ý ngoài câu này của @superthin, đẻ ra database ko hẳn là cung cấp phương tiện cho việc đọc ghi thuận tiện hơn đâu, thực tế là phức tạp hơn đấy chứ, còn phải connect, rồi query này nọ. Chỉ là nó phù hợp với các cơ sở dữ liệu lớn và có quan hệ phức tạp với nhau, cộng với việc flexible và cho phép nhiều thằng dùng cùng lúc mà ko gây xung đột thôi.
Thank you,
Nếu như mình không muốn dùng XML mà Json hay Gson Có tương tự không bạn. ???
Mình hay làm với xml, nhưng cũng có thư viện .Net hỗ trợ json đây:
newtonsoft.com
Json.NET - Newtonsoft
Json.NET is a popular high-performance JSON framework for .NET
Database có thể rắc rối khi connect, nhưng nó lại là phương thức lưu trữ tuyệt vời với các đối tượng có mối quan hệ với nhau, thứ mà XML hay Json không thể có được. Và nếu dữ liệu lớn thì file xml . json cũng rất to (có khi đến hàng chục MB) còn db thì được tối ưu hơn chuyện lưu trữ
Bạn cũng không thể search trên json, xml. Bạn phải parse json, xml ra array rồi dùng hàm search, sort, rất dễ mất performance, việc update dữ liệu trên db luôn đơn giản hơn trên xml hay json
Ngoài ra khả năng query mạnh của SQL cũng là một lợi thế rất lớn
Nếu ứng dụng chỉ có 1 - 2 đối tượng, hoặc đối tượng đó quá nhỏ, không cần đến db như lưu trữ configuration của app thì json, xml là sự lựa chọn tuyệt vời. Còn lưu dữ liệu record lâu dài thì nên chọn db, nếu là app muốn lưu trữ offline thì SQLite là sự lựa chọn rất tốt vì tính di động của nó, mình cũng có nói ở comment trên
Không phải ngẫu nhiên mà app Android họ recommend lưu trữ trên SQLite thay vì tạo file xml, json
Hi Tiến Nguyễn.
Bạn có thể nêu rõ yêu cầu cũng như hoàn cảnh sử dụng không ?.