2016-11-23 5 views
0

Как сохранить импортированные данные из excel в datagridview в базу данных на C# Я сохранил записи и экспортировал их на листе excel, экспортировал вместе с идентификатором данных, теперь я повторно импортировал вернуться к datagridview от excel. теперь я хочу сохранить данные в базу данных.Как сохранить импортированные excel в datagridview в базу данных C#

enter image description here

Важно знать:

Имя базы данных "Records.sdf" с использованием SQL Compact 3.5 DataGridViewName является RecordsDataGridView.

Я использую следующий код, но он не работает.

public void SaveData() 
    { 
     // Save the data. 

     SqlCeConnection conn = 
       new SqlCeConnection(
        @"Data Source=|DataDirectory|\Records.sdf;Persist Security Info=False"); 

     SqlCeCommand com; 
     string str; 
     conn.Open(); 
     for (int index = 0; index < RecordsDataGridView.Rows.Count - 1; index++) 
     { 
      str = @"Insert Into OutgoingChequeRecords(ID,BankName,Date,AccountNo, Chequebook, ChequeNo, Payee, Amount, Remarks) Values(" + RecordsDataGridView.Rows[index].Cells[0].Value.ToString() + ", '" + RecordsDataGridView.Rows[index].Cells[1].Value.ToString() + "'," + RecordsDataGridView.Rows[index].Cells[2].Value.ToString() + "," + RecordsDataGridView.Rows[index].Cells[3].Value.ToString() + "," + RecordsDataGridView.Rows[index].Cells[4].Value.ToString() + "," + RecordsDataGridView.Rows[index].Cells[5].Value.ToString() + "," + RecordsDataGridView.Rows[index].Cells[6].Value.ToString() + "," + RecordsDataGridView.Rows[index].Cells[7].Value.ToString() + "," + RecordsDataGridView.Rows[index].Cells[8].Value.ToString() + ")"; 
      com = new SqlCeCommand(str, conn); 
      com.ExecuteNonQuery(); 
     } 
     conn.Close(); 
    } 

ОШИБКА ПРИЕМА Имя столбца не Действительно, имя столбца = Наличный

+1

Отсутствует 'для значений в некоторых столбцах! Вы должны обернуть значение между «для получателя платежа (col index 6, а также для других текстовых столбцов) – Emanuele

+0

, пожалуйста, помогите с датой сохранить как 0, столбец 2 – Patrick

+0

Каждое значение должно иметь формат. Используйте параметры! Вставьте значения таблицы (столбца) (@value), а затем установите параметр. Я не могу знать формат вашей даты. – Emanuele

ответ

1

Попробуйте эту строку запроса

str = @"Insert Into OutgoingChequeRecords(ID,BankName,Date,AccountNo, Chequebook, ChequeNo, Payee, Amount, Remarks) Values(" + RecordsDataGridView.Rows[index].Cells[0].Value.ToString() + ",'"+ RecordsDataGridView.Rows[index].Cells[1].Value.ToString() + "'," + RecordsDataGridView.Rows[index].Cells[2].Value.ToString() + ",'" + RecordsDataGridView.Rows[index].Cells[3].Value.ToString() + "','" + RecordsDataGridView.Rows[index].Cells[4].Value.ToString() + "','" + RecordsDataGridView.Rows[index].Cells[5].Value.ToString() + "','" + RecordsDataGridView.Rows[index].Cells[6].Value.ToString() + "','" + RecordsDataGridView.Rows[index].Cells[7].Value.ToString() + "','" + RecordsDataGridView.Rows[index].Cells[8].Value.ToString() + "')"; 
+0

Работал, но только 1 ряд был сохранен. 3-й ряд был сохранен, первые два не сделали, и дата наступает как 0. – Patrick

+0

Исправлено, сохраняя индекс до 0 и RecordsDataGridView.Rows.Count -1 для RecordsDataGridView.Rows.Count – Patrick

+0

ok date still problem. – Patrick

1

Вы должны пройти поле VARCHAR, заключенный с одинарной кавычки.

var str = @"Insert Into OutgoingChequeRecords(ID,BankName,Date,AccountNo, Chequebook, ChequeNo, Payee, Amount, Remarks) Values(" 
         + RecordsDataGridView.Rows[index].Cells[0].Value.ToString() + ", '" 
         + RecordsDataGridView.Rows[index].Cells[1].Value.ToString() + "'," 
         + RecordsDataGridView.Rows[index].Cells[2].Value.ToString() + "," 
         + RecordsDataGridView.Rows[index].Cells[3].Value.ToString() + "," 
         + RecordsDataGridView.Rows[index].Cells[4].Value.ToString() + "," 
         + RecordsDataGridView.Rows[index].Cells[5].Value.ToString() + "," 
         + "'" + RecordsDataGridView.Rows[index].Cells[6].Value.ToString() + "'" + "," 
         + RecordsDataGridView.Rows[index].Cells[7].Value.ToString() + "," 
         + "'" + dataGridView1.Rows[index].Cells[8].Value.ToString() + "'" + ")"; 
+0

Пожалуйста, помогите с датой сохранения, как 0, столбец 2 – Patrick

0

Есть несколько способов сделать это.

Это один из способов.

private void save_btn_Click(object sender, EventArgs e) 
{ 
    sAdapter.Update(sTable); 
    dataGridView1.ReadOnly = true; 
    save_btn.Enabled = false; 
    new_btn.Enabled = true; 
    delete_btn.Enabled = true; 
} 

http://csharp.net-informations.com/datagridview/csharp-datagridview-database-operations.htm

Вы можете сделать это, как хорошо.

string StrQuery; 
try 
{ 
    using (SqlConnection conn = new SqlConnection(ConnString)) 
    { 
     using (SqlCommand comm = new SqlCommand()) 
     { 
      comm.Connection = conn; 
      conn.Open(); 
      for(int i=0; i< dataGridView1.Rows.Count;i++) 
      { 
       StrQuery= @"INSERT INTO tableName VALUES (" 
        + dataGridView1.Rows[i].Cells["ColumnName"].Text+", " 
        + dataGridView1.Rows[i].Cells["ColumnName"].Text+");"; 
       comm.CommandText = StrQuery; 
       comm.ExecuteNonQuery(); 
      } 
     } 
    } 
} 

Нечто подобное будет работать.

private void buttonSave_Click_1(object sender, EventArgs e) // save to invoice 
{ 
    SqlConnection con = new SqlConnection(MyConnectionString); 
    string SqlCmdText = "INSERT INTO invoice (p_code, p_name, p_category, p_price) " + 
            VALUES (@code, @name, @category, @price)"; 
    SqlCommand sc = new SqlCommand(SqlCmdText, con); 
    con.Open(); 
    foreach (DataRow row in MyTable.Rows) 
    { 
     sc.Parameters.Clear(); 
     sc.Parameters.AddWithValue("@code", row["p_code"]); 
     sc.Parameters.AddWithValue("@name", row["p_name"]); 
     sc.Parameters.AddWithValue("@category", row["p_category"]); 
     sc.Parameters.AddWithValue("@price", row["p_price"]); 
     sc.ExecuteNonQuery(); 
    } 
    con.Close(); 
} 
Смежные вопросы