繁体   English   中英

从Datagrid中的多个列写入Access中的多个列

[英]Writing to more than one Column in Access from more than one Column in Datagrid

我在这里遇到了一些问题。 我正在使用OLEDB和INSERT语句将数据从datagridview导入到Access数据库,但是现在我被卡住了,因为Access表具有启用了required选项的多列,所以我想知道如何使用INSERT语句以将值从datagrid的多于一列获取到Access中的多于一列。 我的代码以这种方式工作,即您单击数据网格中的任何单元格,而不是单击列表视图中的列名。 这是我的代码,很抱歉(有点混乱),但是我是编码的新手。

private void datExcel_CellClick(object sender, DataGridViewCellEventArgs e)
{
    string sqlSelect = "SELECT [" + datExcel.Columns[e.ColumnIndex].Name + "] FROM [" + cboSource.Text + "]  ";
    _ColumnValues = new List<string>();
    OleDbCommand cmd = _SourceConn.CreateCommand();
    cmd.CommandText = sqlSelect;
    OleDbDataReader reader = cmd.ExecuteReader();

    while (reader.Read())
    {
        if (!string.IsNullOrWhiteSpace(reader.GetValue(0).ToString()))
        {
            _ColumnValues.Add(reader.GetValue(0).ToString());
        }
    }
    reader.Close();
}

另一部分,如果您需要

private void lvwDestination_SelectedIndexChanged(object sender, EventArgs e)
{
    try
    {
        _tablesname = lvwDestination.SelectedItems[0].Text;

        for (int i = 1; i < _ColumnValues.Count; i++)
        {
           string Colname = _ColumnValues[i];
           string sqlIns = "INSERT INTO " + cboTableName.Text + " ([" + _tablesname + "]) VALUES ('" + Colname + "')";
           OleDbCommand cmd = _DestConn.CreateCommand();
           cmd.CommandText = sqlIns;
           cmd.ExecuteNonQuery();
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

最好的方法是使用+ =运算符动态地构建INSERT INTO语句,但您也可以使用StringBuilder。 就我而言,我使用+ =。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM