簡體   English   中英

如何將datagridview中導入的excel保存到數據庫C#

[英]how to save imported excel in datagridview to database C#

如何將導入數據從datagridview中的excel保存到C#中的數據庫中我已保存記錄並導出到excel工作表,它與數據ID一起導出,現在我已從excel重新導入回datagridview。 現在我想將數據保存到數據庫。

在此處輸入圖片說明

重要提示:

使用SQL Compact 3.5 DataGridViewName的數據庫名稱“ Records.sdf”為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();
    }

接收錯誤 列名稱無效,列名稱= Cash

您應該傳遞用單引號引起來的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() + "'" + ")";

試試這個查詢字符串

 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() + "')";

有幾種方法可以做到這一點。

這是一種方法。

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM