将编辑的数据保存为行
我在datagridview
显示数据库表。 我可以正确地将记录从datagridview
保存到sql中的数据库。
现在,我想修改和更改一些记录并将这些更改保存在数据库中。 我怎样才能做到这一点? 我使用的是绑定datasource
连接到一个数据集datatable
。
private void Form1_Load(object sender, EventArgs e)
{
this.cPDM0020TableAdapter.Fill(this.cpdm_dataset.CPDM0020);
}
private void btnSave_Click(object sender, EventArgs e)
{
string code = dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value.ToString().ToUpper();
string currency_Name = dataGridView1[1, dataGridView1.CurrentCell.RowIndex].Value.ToString().ToUpper();
string boolBase = dataGridView1[2, dataGridView1.CurrentCell.RowIndex].Value.ToString();
string local_per_Base = dataGridView1[3, dataGridView1.CurrentCell.RowIndex].Value.ToString();
string base_per_Local = dataGridView1[4, dataGridView1.CurrentCell.RowIndex].Value.ToString();
string insert_sql = "INSERT INTO centraldb.dbo.CPDM0020(Code,Currency_Name,Base,Local_per_Base,Base_per_Local)VALUES('" +
code + "','" +
currency_Name + "','" +
boolBase + "','" +
local_per_Base + "','" +
base_per_Local + "')";
if (this.ExecuteSql(insert_sql))
{
MessageBox.Show("Record Inserted Successfully.");
}
else
{
MessageBox.Show("Insert Failed");
}
}
public bool ExecuteSql(string command)
{
SqlCommand sqlCommand = new SqlCommand(command, connection);
connection.Open();
sqlCommand.ExecuteNonQuery();
this.cPDM0020TableAdapter.Fill(this.cpdm_dataset.CPDM0020);
dataGridView1.DataSource = cpdm_dataset.CPDM0020;
sqlCommand.Dispose();
connection.Close();
return true;
}
我可以在数据库和datagridview
轻松保存新条目,但是我无法编辑已经存在的记录。编辑完成后点击保存按钮,它会再次显示以前的值。 请帮忙。
您的数据库不受您的应用程序控制; 当数据发生变化时,它不会将某个事件发送回您的应用程序。 您必须主动重新查询数据库以进行更改。
DataGridView更典型的方法是首先将更改应用到本地数据副本,然后使用DataAdapter将更改推回到数据库。 这样可以避免在更改完成后刷新整个本地数据集。 请参阅使用DataAdapter更新数据源(ADO.NET)。
基本序列是:
只需要通过使用选择命令来检查表中是否存在记录
“选择* from centraldb.dbo.CPDM0020其中Code ='”+ Code +“'”;
你可以使用这个功能:
public bool IsExistRecord(string Query)
{
try
{
DataTable DT = new DataTable();
SqlCommand CMD = new SqlCommand(Query, Connection);
SqlDataAdapter DA = new SqlDataAdapter(CMD);
DA.Fill(DT);
if (DT.Rows.Count > 0)
return true;
else
return false;
}
catch (Exception ex)
{
return false;
}
}
如果记录存在执行更新查询,如果不存在则执行插入查询。
尝试使用以下代码>
try
{
var row = gvTransactions.CurrentRow;
int ID= int.parse(row.Cells[0].Value.ToString());
string abc=row.Cells[0].Value.ToString();
}
catch(exception ex)
{
}
获取像这样的值。
注意:不要在catch块中写任何东西
然后根据您的需要触发插入/更新查询。
链接地址: http://www.djcxy.com/p/12289.html