2012-11-19 14 views
0

我創建了一個計算各種海軍裝備的程序。現在是保存用戶輸入,計算和結果的時候了。事情是,我的同事需要爲不同的客戶計算,爲他們創建不同的項目數量。所以我想保存我的程序的所有值,用於這些不同的項目。我將在DataGridView中將項目顯示爲開始屏幕。根據所選項目,程序必須加載值。保存不同項目的應用程序的值

我已經看過別人的以前的解決方案,使用數據庫爲此,但我的問題是:是否有這樣做,沒有使用數據庫。因爲我是數據庫的新手,而且在C#中也不是那麼有經驗。所以如果任何人有小費,參考或小例子,我很感激。

有關應用程序的一些信息:

的應用有不同的選項卡的頁面。在每個標籤頁中,用戶必須給出一些輸入,例如寬度,高度,深度等。在一個標籤中,風力被施加到其他標籤上的輸入。在另一個選項卡中,線的力量應用於不同選項卡上的多個輸入等。

需要爲不同的客戶端計算這些值,從而實現不同的項目。這些項目需要保存,因此可以對它們進行審查,編輯,甚至是永久性的。因此,一個人打開程序並用DataGridView看到一個窗口,該窗口包含不同的項目(項目編號,客戶端名稱等)。他點擊一個項目編輯它,所以他應該看到屬於該程序的值。如果他關閉了該項目,則應保存這些值,並且用戶應該可以在DataGridView中選擇其他項目並加載其他項目的值。

我的問題是:如何保存這些「不同的項目」與他們的價值觀。

+0

將它們存儲在文本文件中,並在需要時讀取它們。 – atoMerz

+0

你的問題不清楚。如果這個應用程序只會生成值,如果是這種情況,只需根據文件的數量生成一個文件,逗號分隔的文件應該足夠輕鬆用於您的技能級別。 –

+0

@Ramhound我添加了一些關於這個程序的信息,希望它更清楚。 – FJPoort

回答

0

OP是要求一個「保存」功能,這不僅僅是在整個計劃的執行保護數據更(你必須做的應用是值得任何東西。)

我建議保存數據一個SD卡上的文件,它允許您不僅可以在以後重新調用它,而且允許用戶將設備作爲外部驅動器安裝在自己的計算機上,並抓取數據以便在其他位置使用。

所以,你真的需要一個多點系統:

1)的onSaveInstanceState實現()。在這個方法中,你傳遞了一個Bundle,它基本上就像一個哈希對象。在捆綁包中存儲儘可能多的信息,以便重新啓動應用程序,確切地說它停留在哪裏。在你的onCreate()方法中,檢查傳入的包是否爲空,如果是,則從包中恢復狀態。

2)實現onPause()。在這種方法中,創建一個SharedPreferences編輯器並使用它來保存下一次啓動應用程序所需的狀態。這主要由用戶的偏好(因此而得名)組成,但其他與應用程序的啓動狀態相關的內容也應該放在這裏。我會不是商店的分數在這裏,只是你需要重新啓動應用程序的東西。然後,在onCreate()中,只要沒有捆綁對象,就使用SharedPreferences接口來調用這些設置。 3a)至於像分數這樣的事情,你可以按照上面的Mathias的建議,使用openFileOutput()等等將分數存儲在getFilesDir()返回的目錄中。我認爲這個目錄對應用是私人的,並且存在於主存儲器,這意味着其他應用程序和用戶將無法訪問數據。如果這對你很好,那麼這可能是一條可行的路。3b)如果你確實希望其他應用程序或用戶能夠直接訪問數據,或者數據量非常大,那麼SD卡是最好的選擇。選擇一個目錄名稱,如com/user1446371/basketballapp /以避免與其他應用程序發生衝突(除非您確定您的應用程序名稱是唯一的)並在SD卡上創建該目錄。正如Mathias指出的那樣,您應該首先確認安裝了SD卡。

File sdcard = Environment.getExternalStorageDirectory(); 
if(sdcard == null || !sdcard.isDirectory()) { 
    fail("sdcard not available"); 
} 
File datadir = new File(sdcard, "com/user1446371/basketballapp/"); 
if(!datadir.exists() && !datadir.mkdirs()) { 
    fail("unable to create data directory"); 
} 
if(!datadir.isDirectory()) { 
    fail("exists, but is not a directory"); 
} 
// Now use regular java I/O to read and write files to data directory 

我建議簡單的CSV文件,爲您的數據,以便其他應用程序可以輕鬆地閱讀它們。

顯然,您必須編寫允許「保存」和「打開」對話框的活動。我通常只是打電話給openintnts文件管理器,讓它做這項工作。這需要您的用戶安裝openintents文件管理器來使用這些功能。

相關問題