1

ユーザーからのデータを保存するためのWinformsアプリケーションとデータベースがあります。

データを挿入するとすべてが正常に機能しますが、ソリューションをクリーンアップし、データベースのGUIをロードして古いデータを表示すると、データが表示されません。datagridviewが空です。

using (SqlConnection con = new SqlConnection(dataBase.Connection.ConnectionString))
{
   using (SqlCommand wow = new SqlCommand("insert into GamesTbl(Type,Date,Time) Values(@type,@date,@time)", con))
   {
      wow.Parameters.AddWithValue("@type", "vsPC");
      wow.Parameters.AddWithValue("@date", DateTime.Now.Date);
      wow.Parameters.AddWithValue("@time", DateTime.Now.TimeOfDay);

      try
      {
          con.Open();
          wow.ExecuteNonQuery();
          con.Close();
      }
      catch (Exception ex)
      {
         MessageBox.Show(ex.Message);
      }
   }
}

なにが問題ですか?

編集:DBGui_loadのデータのバインド

private void DBGui_Load(object sender, EventArgs e)
    {
        dataGridView1.DataSource = playersTblBindingSource;
        playersTblBindingSource.DataSource = DB.GamesTbls;

    }

編集:私の接続文字列:

"Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database1.mdf;Integrated     
Security=True;User Instance=True"
4

3 に答える 3

1

User Instance と AttachDbFileName=のアプローチ全体に欠陥があります - せいぜい! Visual Studio でアプリを実行すると、ファイルがコピーされます.mdf(通常はアプリが実行される出力ディレクトリ.\bin\debug) 。終わり!INSERT

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

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

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

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

  3. SSMS Expressでデータベースを作成し、それに論理的な名前を付けます (たとえばDatabase1、またはそれを行っているときに、より適切な名前を付けます...)

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

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

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

于 2013-03-10T14:15:24.203 に答える
0

別の解決策として、問題を解決するためにできることは、ソリューションでデータベース ファイルのプロパティを次のように設定することです。

Copy To Output Directory:do not copy

于 2013-03-10T16:33:45.847 に答える
0

あなたが行方不明のようDataBindです。

private void DBGui_Load(object sender, EventArgs e)
{
    dataGridView1.DataSource = playersTblBindingSource;
    dataGridView1.DataBind(); // you are missing this
    playersTblBindingSource.DataSource = DB.GamesTbls;
}
于 2013-03-10T11:23:06.423 に答える