2015-01-27 5 views
0

WinForm C# 응용 프로그램을 개발했습니다. 예기치 않게 닫히면 복구 옵션이 추가됩니다. 새 작업은 모두 복구 할 수 있습니다.DataTable을 저장하고 복원하는 가장 좋은 방법 C#

나는 (목록, Int, 문자열 등 ...) 거의 모든 것을 복구 할 수있었습니다. 내가 직면하고있는 문제는 DataTable입니다. 실행 중에는 응용 프로그램 기록이 DataTable에 추가되고 최종 사용자는이를 CSV로 내보낼 수 있습니다.

나는 DataTableProperties.Settings.Default에 추가하려고 시도했다. 그러나 새로운 실행에는 항상 작동하지 않는다. 나는 항상 이것을 Null으로 본다.

DataTable을 저장하고 복원하는 가장 좋은 방법에 대한 제안은 실행 중에 10-15k를 초과 할 수 있음을 명심하십시오.

답변

4

Properties.Settings 문자열 데이터를 저장할 수 있습니다 감사, 그래서 당신은 당신의 DataTable를 직렬화하고 저장할 수 있습니다. 나중에 문자열을 비 직렬화하여 DataTable이되도록 할 수 있습니다. 당신은 같은 JSON.Net를 사용할 수 있습니다

var serializedDt = JsonConvert.SerializeObject(dt); 
//store the string 

다시 검색 할 수 있습니다 :

DataTable yourDataTable = JsonConvert.DeserializeObject<DataTable>(serializedDt); 

한가지 더 당신이 대용량 데이터를 기대하는 경우에, 당신은에서 데이터베이스에 데이터를 저장하는 옵션을 볼 수 있으며, 추가 클라이언트 측 (예 : Sqlite)

+0

나는 Json과의 사전 경험이 없습니다. 그래서 제게 묻지 마십시오. 그다지 긴 문자열이 아닐까요? DataTable에 약 10k 개의 레코드가 있고 약 10 개의 열이 있고 열 중 하나가 매우 긴 텍스트를 포함 할 수있는 설명입니다. – confusedMind

+0

XML 또는 JSON으로 데이터를 직렬화 할 수 있습니다. [JSON] (http://en.wikipedia.org/wiki/JSON)은 XML보다 짧습니다. – Habib

+0

그래서 문자열을 저장하고 속성을 사용하여 검색 할 수있는 시간이 얼마나 오랫동안 지속되는지 말하고 있습니다. – confusedMind

1

개체를 직렬화하지만 복구 파일에 저장하십시오. 복구를 시작하는 동안 파일을 읽으면 공간에 대해 걱정할 필요가 없습니다.

+0

복구 파일 링크에 대해 더 자세히 설명해 주시겠습니까? – confusedMind

+0

예 - DataTable을 열면 ApplicationFolder의 텍스트 파일에 기록한 다음 복구 시작시 읽습니다. 어쩌면 파일 이름을 설정에 쓸 수 있습니다. –

+0

나는 그 말이 이치에 맞습니다. – confusedMind

관련 문제