0

我想将空 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”。

我的代码有什么问题?这样做的最佳解决方案是什么?

4

2 回答 2

1

我猜其中一个返回-1:

dtable.Columns.IndexOf("ColumnX")
于 2012-06-02T15:11:30.223 回答
0

您所做的是完全错误的,您的代码中没有与数据网格相关的代码,您只需从数据库表中获取数据并循环返回每一行并尝试再次将相同的数据插入到数据库中的同一张表中。在每个项目中,您尝试从数据库中填充同一张表。

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

    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 的 select、update 和 insert 命令,那么可以调用 MySqlDataAdapter.Update 方法。

检查以获取更多信息。

编辑

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

        }
 }
于 2012-06-02T15:50:05.573 回答