i am passing value from text box to datagridview which is also inserted in access db. but its also accepting duplicate values in datagridview. how do i prevent duplicates values ? here is picture project is in C# .Net framework.
here is Add button click event
private void AddButton_Click(object sender, EventArgs e) {
try
{
connection = new OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=F:\\Floro_sense\\Floros.mdb");
connection.Open();
OleDbCommand command = new OleDbCommand("INSERT INTO Sflorotype(Sflorovalues, Sflorotypes) VALUES ('" + ValueTextBox.Text + "','" + TypeTextBox.Text + "');", connection);
var result = command.ExecuteNonQuery();
OleDbDataAdapter adapter = new OleDbDataAdapter("select * from Sflorotype", connection);
DataTable table = new DataTable();
adapter.Fill(table);
var data = string.Join(Environment.NewLine,
table.Rows.OfType<DataRow>().Select(x => string.Join(" ; ", x.ItemArray)));
BindingSource bind = new BindingSource();
bind.DataSource = table;
dataGridViewList.DataSource = bind;
adapter.Update(table);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
connection.Close();
}
}
You can write a method to check that a florotype already exists and use this method before inserting to the DB. If the FloroTypeExists()
returns true then show a message box saying that the floro type already exists and do not add it to the DB.
(Pseudo-code)
private bool FloroTypeExists(string floroType)
{
// Get your connection here
string strSql = "select * from Sflorotype where Sflorotypes = '" + floroType + "'";
OleDbDataAdapter adapter = new OleDbDataAdapter(strSql, connection);
DataTable table = new DataTable();
adapter.Fill(table);
bool floroTypeExists = (table.Rows.Count > 0);
return floroTypeExists;
}
Some notes: You should refactor your code to write DB access code in dedicated classes and not in your Button click handler. Also you should not hard-code your DB conection strings and put them in config files.