2011-06-23 23 views
0

我在这里遇到了一些问题。我正在从datagridview导入数据到一个Access数据库与OLEDB和一个INSERT语句,但现在我卡住,因为Access表有多个列有需要选项打开,所以我想知道如何使用INSERT声明将数据网格中多个列的值传递给Access中的多个列。我的代码这样工作,你点击数据网格中的任何单元格,而不是列表视图中的列名称。这是我的代码,很抱歉,如果它是一点点(确定很多杂乱),但我是编码新手。在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); 
    } 
} 

回答

0

要做到这一点,最好的办法另一部分是通过建立你的INSERT INTO声明动态使用+ =运算符,但你也可以使用StringBuilder。在我的情况下,我用+ =。