2012-08-08 47 views
2

我有一個datagridview,並在表中的一些數據。 在DataGridView允許用戶輸入數據的新行如何從datagridview向數據庫中插入新添加的數據行?

的問題在這裏:

我想知道我如何能得到數據的新插入的行(無論多少行已添加)到數據庫中,而不添加將被複制的現有數據。

有人嗎?

編輯:即時通訊使用SQL數據庫,這是我的datagridview。

enter image description here

顯示的數據是已經在數據庫裏面,現在,如果用戶插入什麼數據的新的多行插入的datagridview?我應該放什麼代碼?

我的代碼如下:

private void button1_Click(object sender, EventArgs e) 
     { 
      con = new System.Data.SqlClient.SqlConnection(); 
      con.ConnectionString = "Data Source=tcp:SHEN-PC,49172\\SQLEXPRESS;Initial Catalog=LSEStock;Integrated Security=True"; 
      con.Open(); 
      SqlDataAdapter da = new SqlDataAdapter(); 

      for (int i = 0; i<dataGridView1.Rows.Count; i++) 
      { 

       String insertData = "INSERT INTO CostList(SupplierName, CostPrice, PartsID) VALUES (@SupplierName, @CostPrice, @PartsID)" ; 
       SqlCommand cmd = new SqlCommand(insertData, con); 
       cmd.Parameters.AddWithValue("@SupplierName", dataGridView1.Rows[i].Cells[0].Value); 
       cmd.Parameters.AddWithValue("@CostPrice", dataGridView1.Rows[i].Cells[1].Value); 
       cmd.Parameters.AddWithValue("@PartsID", textBox1.Text); 
       da.InsertCommand = cmd; 
       cmd.ExecuteNonQuery(); 
      } 

      con.Close(); 
+2

你能提供有關要添加什麼類型的數據多一點細節,什麼是依託數據庫? – Moop 2012-08-08 02:14:49

回答

0

你有什麼樣的數據庫?這裏是我的oracle數據庫的源代碼。如果它的SQL數據庫替換:with @。

的源代碼:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ProjectCISConnectionString %>" ProviderName="<%$ConnectionStrings:ProjectCISConnectionString.ProviderName %>" 
      SelectCommand="SELECT * FROM CIS.CIS_TRANS ORDER BY ID ASC" 
      DeleteCommand="DELETE FROM CIS.CIS_TRANS WHERE ID = :ID" 
      InsertCommand="INSERT INTO CIS.CIS_TRANS (TRANS_CD,FUND_CD,BSA_CD,DP_TYPE,TRANS_CD_DESC) VALUES (:TRANS_CD,:FUND_CD,:BSA_CD,:DP_TYPE,:TRANS_CD_DESC)" 
      UpdateCommand="UPDATE CIS.CIS_TRANS SET TRANS_CD = :TRANS_CD, FUND_CD = :FUND_CD, BSA_CD = :BSA_CD, DP_TYPE = :DP_TYPE, TRANS_CD_DESC =:TRANS_CD_DESC WHERE ID = :ID"> 

     </asp:SqlDataSource> 

你也將需要一個查詢頁面和一些其他的東西,請讓我知道更多的信息。

1

我的繼承人插入,取消並刪除聲明:

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e) 
     { 

      if (e.CommandName == "Insert") //- this is needed to explain that the INSERT command will only work when INSERT is clicked 
      { 
       gv.DataBind(); 

       DataTable d = dbcon.GetDataTable("SELECT * FROM CIS.CIS_TRANS ORDER BY ID DESC", "ProjectCISConnectionString"); 

       string transCode = "", fundCode = "", BSA_CD = "", DP_TYPE = ""; 

       if (d.Rows.Count > 0) 
       { 
        transCode = d.Rows[0]["TRANS_CD"].ToString(); 
        fundCode = d.Rows[0]["FUND_CD"].ToString(); 
        BSA_CD = d.Rows[0]["BSA_CD"].ToString(); 
        DP_TYPE = d.Rows[0]["DP_TYPE"].ToString(); 

        if (transCode.Trim().Length > 0) 
        { 
         dbcon.Execute("INSERT INTO CIS.CIS_TRANS (ID,TRANS_CD) VALUES(CIS.S_CIS_TRANS.nextval,'')", "ProjectCISConnectionString"); 

         gv.DataBind(); 
        } 
       } 
gv.EditIndex = gv.Rows.Count - 1; 

     } 
     else if (e.CommandName == "Cancel") 
     { 
      DataTable d = dbcon.GetDataTable("SELECT * FROM CIS.CIS_TRANS ORDER BY ID DESC", "ProjectCISConnectionString"); 

      string transCode = ""; 

      if (d.Rows.Count > 0) 
      { 
       transCode = d.Rows[0]["TRANS_CD"].ToString(); 

       if (transCode.Trim().Length == 0) 
       { 
        dbcon.Execute(string.Format("DELETE CIS.CIS_TRANS WHERE ID = '{0}'", d.Rows[0]["ID"]), "ProjectCISConnectionString"); 

        gv.DataBind(); 
       } 
      } 
0

我做這樣的事情。快速方便,似乎很好地工作:

cmd1.Connection = this.sqlConnection1; 
this.sqlConnection1.Open(); 

foreach (GridViewRow row in your_grid.Rows) 
     { 
      Label id = (Label)row.FindControl("your_control"); //what ever control you are using 

      SqlCommand cmd1 = new SqlCommand(); 

      cmd1.CommandText = "insert into your_table values (@p,@p1,@p2)"; 

      cmd1.Parameters.Add("@p", SqlDbType.VarChar).Value = your_control.Text; 
      cmd1.Parameters.Add("@p1", SqlDbType.VarChar).Value = your_control.Text; 
      cmd1.Parameters.Add("@p2", SqlDbType.VarChar).Value = your_control.Text; 


      cmd1.CommandType = CommandType.Text; 


      cmd1.ExecuteNonQuery(); 

     } 
      this.sqlConnection1.Close(); 
0

你有一個sqlcommandbuilder,DataAdapter的,和DataTable申報?

例如:

SQLConnection con = (your connection); 
SQLDataAdapter = sda; 
SQLCommandBuilder = scb; 
DataTable = dt; 
private void btnEnter_Click(object sender, EventArgs e) 


da = new SqlDataAdapter("SELECT * FROM [table] WHERE [columnA]='" + txtData.Text + "' OR [columnB]='" + txtData.Text + "' OR [ColumnC]='" + txtData.Text + "' OR [ColumnD]='" + txtData.Text + "'", con); 
      ds = new DataSet(); 
      dt = new DataTable(); 
      ds.Clear(); 
      da.Fill(dt); 
      dg.DataSource = dt; 

      con.Open(); 
      con.Close(); 

private void btnUpdate_Click(object sender, EventArgs e) 
    { 
     //when button is clicked, the SQL Database gets updated with the data that is plugged into the datagridview. 
     scb = new SqlCommandBuilder(da); 
     da.Update(dt); 

    } 
相關問題