将编辑的数据保存为行

我在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)VAL‌​UES('" + 
        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)。

基本序列是:

  • 连接到数据源,使用DataAdapter.Fill()来填充数据表
  • 定义一个UpdateCommand或InsertCommand,它定义本地DataTable中的数据如何被推送到数据库
  • 将一行添加到您的本地DataTable
  • 调用DataAdapter.Update()将更新推送到数据库。

  • 只需要通过使用选择命令来检查表中是否存在记录

    “选择* 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

    上一篇: Save the edited data in rows

    下一篇: If/else suggests package description