Запись в более чем один столбец в Access из более чем одного столбца в Datagrid - PullRequest
0 голосов
/ 23 июня 2011

Я застрял здесь с небольшой проблемой. Я импортирую данные из таблицы данных в базу данных Access с помощью OLEDB и оператора INSERT, но теперь я застрял, потому что в таблице Access есть несколько столбцов, для которых включена опция обязательна, поэтому мне интересно, как я могу использовать INSERT Оператор для получения значений из более чем одного столбца в сетке данных в несколько столбцов в 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);
    }
}

1 Ответ

0 голосов
/ 29 июля 2011

Лучший способ сделать это - создать оператор INSERT INTO динамически с помощью оператора + =, НО вы также можете использовать StringBuilder.В моем случае я использовал + =.

...