2011-06-23 16 views
0

ここで少し問題が残っています。私は、データテーブルからOLEDBとINSERTステートメントを使用してAccessデータベースにデータをインポートしていますが、アクセステーブルに複数のカラムがあり、必要なオプションがオンになっているので、私はどうしたらよいですか? DataGridの複数の列から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を構築することですが、あなたはまたのStringBuilderを使用することができます。私の場合、+ =を使用しました。

関連する問題