从空的 DataGridView 中获取值并将其插入数据库 C#

本文关键字:插入 数据库 DataGridView 获取 | 更新日期: 2023-09-27 18:36:02

我想将数据从空的DataGridView插入到数据库中(DataGridView不会从数据库加载,但我只是获取DataGridView中的值)。

我尝试了以下代码:

private void vButton12_Click(object sender, EventArgs e)
    {
        MySqlConnection conn = new MySqlConnection("server=localhost;User Id=root;database=sma9");
        DataTable dtable = new DataTable();
        MySqlDataAdapter adp = new MySqlDataAdapter("select * from tdetpinjam", conn);
        adp.Fill(dtable);            
        for (int i = 0; i < dtable.Rows.Count; i++)
        {
            MySqlDataAdapter adp1 = new MySqlDataAdapter("INSERT INTO tdetpinjam (nopinjam,kodebuku,jumlah,tglkembali,status) VALUES ('" + dtable.Rows[i][dtable.Columns.IndexOf("Column1")] + "','" + dtable.Rows[i][dtable.Columns.IndexOf("Column2")] + "','" + dtable.Rows[i][dtable.Columns.IndexOf("Column3")] + "','" + dtable.Rows[i][dtable.Columns.IndexOf("Column4")] + "','" + dtable.Rows[i][dtable.Columns.IndexOf("Column5")] + "')", conn);
            conn.Open();
            adp1.Fill(dtable);
            conn.Close();
        }
    }

但是我收到错误"找不到列-1"。

我的代码出了什么问题? 最好的解决方案是什么?

从空的 DataGridView 中获取值并将其插入数据库 C#

我想其中一个返回 -1:

dtable.Columns.IndexOf("ColumnX")

你正在做的事情是完全错误的,你的代码中没有与Datagrid相关的代码,你只是从数据库表中获取数据,遍历返回的每一行,并尝试将相同的数据再次插入到数据库中的同一个表中。 在每个项目中,您尝试从数据库填充相同的表。

获取给定列的索引时发生实际错误,需要在插入之前对其进行验证

    if(dtable.Columns.IndexOf("Column1") != -1 && 
    dtable.Columns.IndexOf("Column2") != -1 && 
    dtable.Columns.IndexOf("Column3") != -1 && 
    dtable.Columns.IndexOf("Column4") != -1 && 
    dtable.Columns.IndexOf("Column5") != -1)
    {
       // insert related code 
    }
如果需要使用 MySqlDataAdapter 插入

记录,请先设置选择、更新和插入 MySqlDataAdapter 的命令,那么可以调用 MySqlDataAdapter.Update 方法。

查看此内容以获取更多信息。

编辑

foreach (DataGridViewRow row in dataGrid.Rows)
{
         foreach (DataGridViewCell cell in row.Cells)
        {
            string value = cell.Value.ToString();
        }
 }