2012-05-10 2 views
0

Windows 양식을 통해 데이터베이스에 레코드를 추가하고 있습니다. 하지만 새로운 기록을 추가 할 때까지 앱을 닫고 다시 시작하기 전까지는 업데이트가 이루어지지 않습니다. 비록 내가 그것을 업데이트 할 것을 말하고 있다고 생각한다 (Im obv not !!)창 형식의 데이터베이스 업데이트 및 C#

데이터베이스를 업데이트하기 위해 새로운 varibale이 필요합니까? 조금 붙어 있네.

편집 :이 모든 코드 ..

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.OleDb; 

namespace MediaManagementSystem 
{ 
public partial class AddMedia : Form 
{ 
    //database var 
    OleDbConnection m_cnADONetConnection = new OleDbConnection(); 
    OleDbDataAdapter m_daDataAdapter; 
    OleDbDataAdapter m_cbCommandBuilder; 
    DataTable m_dtMedia = new DataTable(); 
    int m_rowPosition = 0; 

    public AddMedia() 
    { 
     InitializeComponent(); 
    } 

    private void BrowseButton_Click(object sender, EventArgs e) 
    { 
     //load up file dialog and find media 
     if (addFileDialog.ShowDialog() == DialogResult.OK) 
     { 
      //add media file name to file path text box 
      txtFilePath.Text = addFileDialog.FileName; 
     } 
    } 

    private void CancelButton_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    } 

    private void AddButton_Click(object sender, EventArgs e) 
    { 
     //add the new record to the database 
     DataRow drNewRow = m_dtMedia.NewRow(); 
     drNewRow["FilePath"] = txtFilePath.Text; 
     drNewRow["Subject"] = txtSubject.Text; 
     drNewRow["Title"] = txtTitle.Text; 
     drNewRow["Keywords"] = txtKeywords.Text; 
     drNewRow["MediaType"] = AddComboBox.Text; 
     m_dtMedia.Rows.Add(drNewRow); 

     m_daDataAdapter.Update(m_dtMedia); 
     m_rowPosition = m_dtMedia.Rows.Count - 1; 
     this.ShowCurrentRecord(); 
     this.Close(); 
    } 

    private void AddMedia_Load(object sender, EventArgs e) 
    { 
     //link to the database and conect to database 
     m_cnADONetConnection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Max\Documents\Visual Studio 2010\Projects\MediaManagementSystem\MediaManagementSystem\bin\Debug\MediaDB.mdb"; 
     m_cnADONetConnection.Open(); 
     OleDbConnection objConnection = new OleDbConnection(m_cnADONetConnection.ConnectionString); 

     m_daDataAdapter = new OleDbDataAdapter("Select * From Media", m_cnADONetConnection); 

     OleDbCommandBuilder m_cbCommandBuilder = new OleDbCommandBuilder(m_daDataAdapter); 
     m_daDataAdapter.Fill(m_dtMedia); 
     m_daDataAdapter.Update(m_dtMedia); 
    } 

    public void ShowCurrentRecord() 
    { 
     m_daDataAdapter.Update(m_dtMedia); 

     if (m_dtMedia.Rows.Count == 0) 
     { 
      txtFilePath.Text = ""; 
      txtSubject.Text = ""; 
      txtTitle.Text = ""; 
      txtKeywords.Text = ""; 
      AddComboBox.Text = ""; 
      return; 
     } 
     txtFilePath.Text = m_dtMedia.Rows[m_rowPosition]["FilePath"].ToString(); 
     txtSubject.Text = m_dtMedia.Rows[m_rowPosition]["Subject"].ToString(); 
     txtTitle.Text = m_dtMedia.Rows[m_rowPosition]["Title"].ToString(); 
     txtKeywords.Text = m_dtMedia.Rows[m_rowPosition]["Keywords"].ToString(); 
     AddComboBox.Text = m_dtMedia.Rows[m_rowPosition]["MediaType"].ToString(); 
    } 
} 

}

+0

" 앱을 닫고 다시 시작하기 전까지는 "다시 닫고 다시 열면 변경 사항이 표시됩니까? – banging

+0

Sidenote : AddButton_Click을 할 때'm_daDataAdapter.Update (m_dtMedia);'를 두 번 호출합니다. – banging

+0

예, 이것이 맞습니다. –

답변

0

DataSet을 사용한 다음 레코드를 업데이트하는 것이 가장 좋습니다. 마지막으로 update() 명령 다음에 AcceptChanges()를 호출하여 데이터 셋을 사용하여 변경 사항을 커밋해야합니다. 또한 최근 데이터 정보를 가져 오기 위해 데이터를 다시로드하십시오. dataset.AcceptChanges()

+0

따라 와서 미안 해요. –

0

는 자신의 메인 폼을 열 AddMedia 양식 후에는 다시 모든 기록을 RALOAD해야합니다. AddMedia 폼을 연 후 양식이 어떻게 열리고 동일한 방식으로 수행되는지 확인하십시오.)

+0

죄송합니다. 다른 일을 할 때부터 내가 가져 가야 할만큼 멀리까지입니다. 당신이 진정으로 노력한다면 여기에서 그것을 알아낼 수 있어야합니다! – banging

+0

'code private void AddButton_Click (객체 발신자, EventArgs e) { AddMedia AddMedia = new AddMedia(); AddMedia.Show(); m_daDataAdapter.Update (m_dtMedia); }'아직 아무것도. 내가 추가 양식을 닫으면 다시로드 할 필요가 없습니까? –

+0

MAIN에서는 모든 기록을 보여주기 위해 무엇을 사용하고 있습니까? DataGridView? 그것이 무엇이든, 업데이트되지 않았습니다! – banging