2013-07-23 42 views
0

這是我的第一個Windows窗體/ SQL應用程序。如何在「提交」按鈕上更新對數據庫的更改?更新按鈕上的DataGridView按

當試圖添加'dt'數據表時,它不能識別它,但我不知道如何將try/catch語句中的按鈕函數。

很明顯,他們現在有兩個功能,但我如何使這項工作作爲一個功能?

代碼如下。

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

namespace AccountsApp 
{ 
    public partial class Search : Form 
    { 
     public Search(string searchString, string searchType) 
     { 

      InitializeComponent(); 

      try 
      { 
       if (searchString != null) 
       { 
        string strCon = "Data Source=OMIW2310.orthman.local;Initial Catalog=Accts;Integrated Security=True"; 
        string strSQL = "SELECT  dbo.Account.UserName, dbo.Account.Password, dbo.Account.URL, dbo.Host.HostName, dbo.Service.ServiceName, dbo.ServiceType.SvcTypeName FROM dbo.Account INNER JOIN dbo.Host ON dbo.Account.AccountHost = dbo.Host.HostID INNER JOIN dbo.Service ON dbo.Account.AccountService = dbo.Service.ServiceID INNER JOIN dbo.ServiceType ON dbo.Account.AccountType = dbo.ServiceType.SvcTypeID WHERE " + searchType + "= '" + searchString + "'"; 
        SqlDataAdapter dataAdapter = new SqlDataAdapter(strSQL, strCon); 
        SqlCommandBuilder commandbuilder = new SqlCommandBuilder(dataAdapter); 
        DataTable dt = new DataTable(); 
        dataAdapter.Fill(dt); 
        dbGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader); 
        dbGridView.DataSource = dt; 




        textBox1.Text = searchString; 
        textBox2.Text = searchType; 



       } 
      } catch (SqlException ex){ 
       MessageBox.Show(ex.Message); 
      } 
     } 

     private void label1_Click(object sender, EventArgs e) 
     { 

     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void Search_Load(object sender, EventArgs e) 
     { 

     } 

     private void textBox2_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      Application.Exit(); 
     } 

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

     private void button1_Click(object sender, EventArgs e) 
     { 
      dbGridView.Update(); 
     } 

     } 
} 

回答

1

從我的理解,你想使用提交按鈕(我認爲是button1)更新數據庫。以下是我對您的表單進行的修改以及代碼註釋中的解釋:

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

namespace AccountsApp 
{ 
    public partial class Search : Form 
    { 
     //make dataadapter and datatable members so they can also 
     //be used by the submit button method 
     private SqlDataAdapter dataAdapter; 
     private DataTable dt; 

     public Search(string searchString, string searchType) 
     { 

      InitializeComponent(); 

      try 
      { 
       if (searchString != null) 
       { 
        string strCon = "Data Source=OMIW2310.orthman.local;Initial Catalog=Accts;Integrated Security=True"; 
        string strSQL = "SELECT  dbo.Account.UserName, dbo.Account.Password, dbo.Account.URL, dbo.Host.HostName, dbo.Service.ServiceName, dbo.ServiceType.SvcTypeName FROM dbo.Account INNER JOIN dbo.Host ON dbo.Account.AccountHost = dbo.Host.HostID INNER JOIN dbo.Service ON dbo.Account.AccountService = dbo.Service.ServiceID INNER JOIN dbo.ServiceType ON dbo.Account.AccountType = dbo.ServiceType.SvcTypeID WHERE " + searchType + "= '" + searchString + "'"; 
        dataAdapter = new SqlDataAdapter(strSQL, strCon); 
        SqlCommandBuilder commandbuilder = new SqlCommandBuilder(dataAdapter); 
        dt = new DataTable(); 
        dataAdapter.Fill(dt); 
        dbGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader); 
        dbGridView.DataSource = dt; 




        textBox1.Text = searchString; 
        textBox2.Text = searchType; 



       } 
      } catch (SqlException ex){ 
       MessageBox.Show(ex.Message); 
      } 
     } 

     private void label1_Click(object sender, EventArgs e) 
     { 

     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void Search_Load(object sender, EventArgs e) 
     { 

     } 

     private void textBox2_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      Application.Exit(); 
     } 

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

     private void button1_Click(object sender, EventArgs e) 
     { 

      //dbGridView.Update(); <------ this simply redraws the datagridview. 
      //Has nothing to do with data. 

      //code required for the update (for the submit to work) 

      //make sure the datagriview has ended editing 
      dataGridView.EndEdit(); 

      //call update on the datatable bound to your datagrdiview 
      dataAdapter.Update(dt); 
     } 
    } 
} 
+0

此工作!非常感謝你! – CryptoJones

+0

很高興它! :) – CristisS