【问题标题】:c# how to access data fields of the selected in DataGridView database recordc#如何访问DataGridView数据库记录中选中的数据字段
【发布时间】:2017-10-01 09:39:16
【问题描述】:

我是数据库编程的新手,所以我的问题可能很简单。

在表单上,​​我有一个 DataGridView,它显示了 SQL 数据库中的所有记录,来自单个表。当我选择一行(OnRowEnter 事件)时,我想在未绑定到 DataSource 的 textBoxes 中显示相同的数据,但我不知道如何访问所选记录及其字段。 我见过很多使用 SQL 语句的例子,但这是唯一的方法吗?或者有没有更简单的方法。我认为我应该能够几乎直接访问当前记录及其字段?有可能吗?

我正在使用 Visual Studio Community 2013

提前感谢您的帮助。

【问题讨论】:

    标签: c# sql database


    【解决方案1】:
        private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            string asd = dataGridView1.Rows[e.RowIndex].Cells["NameOfColumn"].Value.ToString();
        }
    

    您可以通过此行访问任何行的任何列。

    编辑: 你刚刚告诉我你想从数据库和按钮(保存 - 覆盖)上填充 2 个文本框,你想保存/覆盖它。那么为什么你不从数据库中填充它

    using (FbConnection con = new FbConnection(connectionString))
    {
        con.Open();
        using (FbCommand cmd = new FbCommand("SELECT TEXT1, TEXT2 FROM TABLE WHERE CONDITION", con))
        {
            FbDataReader dr = cmd.ExecuteReader();
            if(dr.Read())
            {
                textBox1.Text = dr[0].ToString();
                textBox2.Text = dr[1].ToString();
            }
        }
        con.close();
    }
    

    然后在用户按下保存后,您只需获取整个文本并更新数据库

    using (FbConnection con = new FbConnection(connectionString))
    {
        con.Open();
        using (FbCommand cmd = new FbCoimmand("UPDATE TABLE SET TEXT1 = @Text1, TEXT2 = @Text2 WHERE CONDITION))
        {
            cmd.Parameters.AddWithValue("@Text1", textBox1.Text);
            cmd.Parameters.AddWithValue("@Text2", textBox2.Text);
    
            cmd.ExecuteNonQuery();
        }
        con.Close();
    }
    

    如果用户正在其他文本框中写入文本,并且您想将该文本添加到数据库中的当前文本中,那么您只需从数据库中读取文本并将其放入字符串中,在该字符串上您添加来自用户的字符串并像这样保存到数据库

    【讨论】:

    • 是的,我知道,但是我想通过数据库访问,因为最后我可能需要用新数据替换当前记录的数据。
    • 您说它需要在未绑定到数据源的文本框中显示数据。您在谈论什么编辑以及将如何完成?
    • 我在数据库表中有两个文本字段,我想在文本框中显示这两个字段。然后用户可以对其进行编辑并保存为新记录或覆盖现有记录。我不希望用户使用 DataGrid 进行编辑。
    • 最后和平,他有 2 个按钮(保存 - 覆盖)吗?
    • 是的,“另存为新”和“覆盖”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多