1

データベースに新しいレコードを追加する Windows フォーム アプリケーションを作成しました。これで、正常に追加され、新しいデータを使用できるようになりました... しかし、アプリケーションを閉じて再度起動すると、アプリケーションは何も変更されていないかのように動作します。

データベースは SQL Server で作成され、アプリケーションは.mdf生成されたファイルを使用します。

メソッドは次のとおりです。

private void btnUnos_Click(object sender, EventArgs e)
{
            //create an instance of the row to be inserted
            PIScarinaDataSet.OsobaRow novaOsoba;
            novaOsoba = pIScarinaDataSet.Osoba.NewOsobaRow();

            //fill the attributes
            novaOsoba.Ime = txtImeOsobe.Text;
            novaOsoba.Drzavnost = dobijDrzavu();
            novaOsoba.Predstavlja = dobijPredstavnika();

            //insert into the database
            this.Validate();
            this.pIScarinaDataSet.Osoba.Rows.Add(novaOsoba);
            this.osobaTableAdapter1.Update(this.pIScarinaDataSet.Osoba);
            this.osobaBindingSource1.EndEdit();
}
4

2 に答える 2

2

これがあなたを助けたので、私はそれを答えにします:

[S]SQL Server によって作成された .MDF を使用しているため、ファイルの [出力ディレクトリにコピー] プロパティが Visual Studio で [新しい場合はコピー] に設定されていることを確認する必要があります。(または、正しいディレクトリに手動で配置する場合は、「コピーしないでください。」) つまり、実際にデータを保存していて、これが問題である場合です。

于 2013-07-10T16:20:09.590 に答える
1

重要な部分であるアプリケーションの接続文字列を示していませんでしたがAttachDbFileName=yourdatabase.mdf、そこのどこかに何かが含まれていると思います。

User Instance と AttachDbFileName=のアプローチ全体に欠陥があります - せいぜい! .mdfVisual Studio でアプリを実行すると、ファイルが (App_Dataディレクトリから出力ディレクトリ (通常.\bin\debugはアプリが実行される場所) に) コピーされ、ほとんどの場合、問題なく動作しますが、間違ったファイルINSERTを見ているだけです。最終的には!.mdf

このアプローチに固執したい場合は、myConnection.Close()呼び出しにブレークポイントを設定してから、 .mdfSQL Server Mgmt Studio Express でファイルを調べてください。データがそこにあることはほぼ確実です。

私の意見では、本当の解決策は

  1. SQL Server Express をインストールします (とにかく、既に完了しています)。

  2. SQL Server Management Studio Express をインストールする

  3. SSMS Expressでデータベースを作成し、論理名を付けます (例: MyDatabase)

  4. 論理データベース名(サーバー上で作成したときに指定) を使用して接続し、物理データベース ファイルとユーザー インスタンスをいじらないでください。その場合、接続文字列は次のようになります。

    Data Source=.\\SQLEXPRESS;Database=MyDatabase;Integrated Security=True
    

    そして、それ以外はすべて以前とまったく同じです...

于 2013-07-10T05:00:28.473 に答える