0

私はプログラミングの初心者で、ジョギング データを WPF で追跡するプログラムを作成しようとしています。私の情報が記録されるコンパクトなSQLデータベースとのデータバインディングを持つリストボックスをセットアップしました。Visual Studio を使用している間は正常に動作しますが、プログラムを公開すると、リストボックスにデータベースからの適切な情報が表示されなくなります。プログラムの新しいセッションを開始するたびに、最初からやり直します。最新のログ データをすべて適切に表示するチャートがあるため、情報がデータベースにあることはわかっています。ただし、リストボックスには、その現在のセッション中に記録されたデータのみが表示されます。プログラムを閉じて再度開くと、以前のセッションのデータがリストボックスに表示されなくなりました。

私のコードは次のようになります。

    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();

繰り返しますが、ビジュアルスタジオでプログラムを実行している間、これはすべて正常に機能します。公開すると、実際のデータベース ファイルが更新されていても、リスト ボックスには現在のセッションのデータのみが表示されます。おそらく私はこれをすべて間違っていますか?何かご意見は?

4

1 に答える 1

0

言うのは難しいですが、私はこの行について少し混乱しています:

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

データソース プロバイダーをハードコーディングしているようです。Visual Studio で同じデータソースを使用していて、アプリを公開するときはよろしいですか?

実行のたびにデータソースが再作成される可能性があり、これが常に新しいデータを保持する理由を説明している可能性があります。

于 2013-03-25T07:24:29.880 に答える