2013-03-25 39 views
0

我是一名編程初學者,我正試圖製作一個跟蹤WPF中的慢跑數據的程序。我設置了一個列表框,該列表框與我的緊湊型sql數據庫進行數據綁定,在該數據庫中記錄我的信息。雖然我在Visual Studio中工作,但它在我發佈該程序時,列表框將不再顯示數據庫中正確的信息。每次開始新節目時,它都會重新開始。我知道信息是在數據庫中,因爲我有圖表,可以正確顯示所有最新記錄的數據。但是,列表框只會顯示當前會話期間記錄的數據。當我關閉程序並重新打開時,來自以前會話的數據不再顯示在列表框中。一旦程序發佈,Listbox將不會顯示更新的數據庫信息

我的代碼如下所示:

runDataDataSet1 ds; 
    runDataDataSet1TableAdapters.runDataTableTableAdapter dt; 
    weightDataSet wds; 
    weightDataSetTableAdapters.weightTableTableAdapter wdt; 


    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 

     ds = ((runDataDataSet1)(this.FindResource("runDataDataSet1"))); 
     dt = new runDataDataSet1TableAdapters.runDataTableTableAdapter(); 
     dt.Fill(ds.runDataTable); 
     CollectionViewSource cvs = ((CollectionViewSource)(this.FindResource("runDataTableViewSource"))); 
     cvs.View.MoveCurrentToFirst(); 

     wds = ((weightDataSet)(this.FindResource("weightDataSet"))); 
     wdt = new weightDataSetTableAdapters.weightTableTableAdapter(); 
     wdt.Fill(wds.weightTable); 
     CollectionViewSource wcvs = ((CollectionViewSource)(this.FindResource("weightTableViewSource"))); 
     wcvs.View.MoveCurrentToFirst(); 

提交數據我有當按鈕被按下提交驗證碼:

double pace = runData.runPace(runData.milesRun, runData.timeRun); 
     double pace2 = Math.Round(pace, 1); 
     double milesDuration = Math.Round((runData.mileDuration(runData.milesRun, runData.timeRun)), 1); 
     paceTextBox.Text = ((milesDuration) + " min mile"); 
     //UPDATE DATABASE 
     string myConnectionString = @"Data Source=C:\Users\zfam\My Projects\programming\visual studio\XTrakker\XTrakker\runData.sdf"; 
     string mySelectQuery = "SELECT [int], [runDate], [runDist], [runTime], [runPace] FROM [runDataTable] order by [int] desc"; 
     DataRow dr = ds.Tables["runDataTable"].NewRow(); 
     SqlCeDataAdapter adapter = new SqlCeDataAdapter(mySelectQuery, myConnectionString); 
     dr["runDate"] = date; 
     dr["runDist"] = distData; 
     dr["runTime"] = timeData; 
     dr["runPace"] = milesDuration; 

     ds.Tables["runDataTable"].Rows.Add(dr); 

     SqlCeCommandBuilder projectBuilder = new SqlCeCommandBuilder(adapter); 
     DataSet newSet = ds.GetChanges(DataRowState.Added); 
     adapter.Update(newSet, "runDataTable"); 
     adapter.Dispose(); 

同樣,雖然我在Visual Studio和我運行程序,這一切都按照它應該的方式工作。一旦我發佈,列表框將只顯示當前會話的數據,即使實際的數據庫文件正在更新。也許我這樣做都錯了?有什麼想法嗎?

回答

0

很難說,但我有點困惑這一行:

string myConnectionString = @"Data Source=C:\Users\zfam\My Projects\programming\visual studio\XTrakker\XTrakker\runData.sdf"; 

看起來像你硬編碼的數據源提供者。你確定你在Visual Studio中使用相同的數據源,並且當你發佈你的應用程序?

也許數據源是在每次執行時重新創建的,這可以解釋爲什麼總是有新數據。

相關問題