这是我的第一个Windows窗体/ SQL应用程序。如何在“提交”按钮上更新数据库的表更改?
当尝试添加'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();
}
}
}
答案 0 :(得分: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);
}
}
}