2013-07-23 41 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