Reputation: 745
This is my first Windows Form/SQL Application. How do I update the table changes to the database on the Submit button press?
When trying to add the 'dt' datatable it doesn't recognize it, but I can't figure out how to put the button function inside the try/catch statement.
Obviously the they are in two functions now, but how do I make this work as one function?
Code is below.
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();
}
}
}
Upvotes: 0
Views: 236
Reputation: 1163
From what I understand, you want to update the database using the submit button (which I presume to be button1). Below are the changes I have made to your form with explanations in code comments:
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);
}
}
}
Upvotes: 1