2011-06-25 20 views
0

このコードは、プログラムを実行するとフォームを正常に読み取り、更新しますが、DataGridviewの値を編集して更新をクリックすると更新されません。
私はビデオチュートリアルシリーズに従っています。このコードは、ビデオを使ってテーブルを更新しています。C#:SqlCe質問、データベースに更新できませんが、データを読み取ることができます

質問:DataGridviewの値を編集すると、なぜ更新されませんか?

using System.Data.SqlServerCe; 

namespace WindowsFormsApplication2 
{ 
    public partial class Form1 : Form 
    { 
     private SqlCeConnection conn;  // Our Connection 
     private SqlCeDataAdapter da;  // Data Adapter 
     private DataSet ds;     // Dataset 
     private string sTable = "authors"; // Table Name 

     public Form1() 
     { 
      InitializeComponent(); 
      InitData(); // Get the Data 
      dataGridView1.DataSource = ds; 
      dataGridView1.DataMember = sTable;    
     } 

     public void InitData() 
     { 
      try 
      { 
       // Instantiate the Connection 
       conn = new SqlCeConnection("Data Source=|DataDirectory|\\Database1.sdf"); 

       // Instantiate a new DataSet 
       ds = new DataSet(); 

       // init SQLDataAdapter with select command and connection 
       da = new SqlCeDataAdapter("SELECT id, name, email FROM " + sTable, conn); 

       // Automatically generates insert, update and delete commands 
       SqlCeCommandBuilder cmdBldr = new SqlCeCommandBuilder(da); 

       // Fill in the dataset view 
       da.Fill(ds, sTable); 

      } 
      catch (Exception excep) 
      { 
       MessageBox.Show("Exception: " + excep.Message); 
      } 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       da.Update(ds, sTable); 
      } 
      catch (Exception excep) 
      { 
       MessageBox.Show(excep.Message); 
      } 
     } 
    } 
} 

プログラムはコンパイルされますが、updateコマンドはbutton1のクリックでデータベースを更新するようには機能していません。

+0

更新コマンドが初期化されているかどうかを確認して確認します。それは可能ですか? – webtrifusion

+0

どのようにすればいいですか?自分で更新コマンドを初期化しないでください。 – Anil

+1

da.Update行のコードにブレークポイントを置き、dsにカーソルを置き、期待しているアップデートを確認してください。私は、データセットがインタフェースで行われた変更を認識するとは思わない。 – webtrifusion

答えて

1

これはばかばかしいかもしれませんが、接続に使用しているユーザー名に書き込み権限があり、データベース上では読み取り専用ではないことを確認しましたか?

関連する問題