2016-12-04 1 views
1

DataGridview에서 데이터베이스로 데이터를 삽입하고 싶지만 발생하지 않았습니다. xls 및 두 번째 버튼의 첫 번째 버튼 가져 오기 데이터는 모든 데이터를 하나의 레코드로 삽입해야합니다. 어떻게 고칠 수 있니? 열 값이 그래서 당신은 다음과 같은 문자열 값을 통과해야 문자열 때문에값을 SQL에 삽입하십시오.

private void button8_Click(object sender, EventArgs e) 
    { 
     string stringconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + textBox2.Text + ";Extended Properties=\"Excel 8.0;HDR=Yes;\";"; 
     OleDbConnection cons = new OleDbConnection(stringconn); 
     OleDbDataAdapter dat = new OleDbDataAdapter("Select * from [Sheet1$]", cons); 
     dat.Fill(dt); 

     dataGridView1.DataSource = dt; 
    } 

    private void button9_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      load(); 
      conn.Open(); 
      string col1 = dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value.ToString(); 
      string col2 = dataGridView1[1, dataGridView1.CurrentCell.RowIndex].Value.ToString(); 
      string col3 = dataGridView1[2, dataGridView1.CurrentCell.RowIndex].Value.ToString(); 

      string insert_sql = "INSERT INTO humans VALUES('" + col1 + "','" + col2 + "','" + col3 + "')"; 

      da = new NpgsqlDataAdapter(insert_sql, conn); 
      da.SelectCommand.ExecuteNonQuery(); 

      conn.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
+0

사용 SQL 매개 변수를. DGV가 DataAdapter를 사용하는 DataTable과 같은 데이터 소스에 바인딩 된 경우 DGV에서 데이터를 가져올 필요가 없습니다. OleDBConnection은 이상하게 보입니다. http://stackoverflow.com/q/22926961/1070452 – Plutonix

+0

개인적으로 DataTable에 DataGridView의 데이터 소스를 저장 한 다음 대상 테이블과 자격 증명을 지정하여 데이터베이스에 BulkInsert를 사용합니다. 사용자 지정 SQL 쿼리를 작성하고 DataGridView의 모든 열 결과를 수동으로 가져 오는 것보다 훨씬 쉽습니다. –

답변

1

어쩌면 문제가 데이터 형식 함께,이 시도 :

string query = "Insert into [User].[dbo].[songsN1] (songsName,path) Values (@c1,@c2,c3)"; 
       command.Parameters.AddWithValue("@c1", col1); 
       command.Parameters.AddWithValue("@c2",col2); 
       command.Parameters.AddWithValue("@c3", col3); 
관련 문제