使用foreach将gridview数据插入sql数据库

我有一个客户端gridview数据,我想将gridview数据插入到SQL数据库。 首先我将数据从excel导入gridview,现在我想将其插入到sql数据库中。

我使用foreach循环逐个插入记录。 但是foreach循环只选择第一条记录,我不能增加行索引。 我怎样才能做到这一点? 并选择其他记录?

protected void btnInsertIntoDatabase_Click(object sender, EventArgs e) { A: string Name = string.Empty; string CarType = string.Empty; string TechnicalNo = string.Empty; string ProductionDate = string.Empty; string EngaineType = string.Empty; string NoInStock = string.Empty; string NoForCar = string.Empty; string Price = string.Empty; string Image = string.Empty; string Desc = string.Empty; string PartType = string.Empty; string Level = string.Empty; string Unit = string.Empty; string Ratio = string.Empty; string Dirham = string.Empty; string ExtraMoney = string.Empty; int GVCount = GridView1.Rows.Count; foreach (GridViewRow GVRow in GridView1.Rows) { Name = GVRow.Cells[1].Text; CarType = GVRow.Cells[2].Text; TechnicalNo = GVRow.Cells[3].Text; ProductionDate = GVRow.Cells[4].Text; EngaineType = GVRow.Cells[5].Text; NoInStock = GVRow.Cells[6].Text; NoForCar = GVRow.Cells[7].Text; Price = GVRow.Cells[8].Text; Image = GVRow.Cells[9].Text; Desc = GVRow.Cells[10].Text; PartType = GVRow.Cells[11].Text; Level = GVRow.Cells[12].Text; Unit = GVRow.Cells[13].Text; Ratio = GVRow.Cells[14].Text; Dirham = GVRow.Cells[15].Text; ExtraMoney = GVRow.Cells[16].Text; break; } SqlConnection scn = new SqlConnection(clspublic.GetConnectionString()); SqlCommand scm = new SqlCommand(); scm.Connection = scn; scm.CommandText = @"INSERT INTO tblProduct (fName, fxCarType, fProductionDate, fEngineType, fNoinStock, fNoforCar, fPrice,fRatio,fDirham,fExtraMoney, fImage, fDesc, fxPartType, fxLevel,fUnitType,fTechnicalNo) VALUES (@fName,@fxCarType,@fProductionDate,@fEngineType,@fNoinStock,@fNoforCar,@fPrice,@fRatio,@fDirham,@fExtraMoney,@fImage,@fDesc,@fxPartType,@fxLevel,@fUnitType,@fTechnicalNo)"; scm.Parameters.AddWithValue("@fName", Name.ToString()); scm.Parameters.AddWithValue("@fxCarType", CarType.ToString()); scm.Parameters.AddWithValue("@fTechnicalNo", TechnicalNo.ToString()); scm.Parameters.AddWithValue("@fProductionDate", ProductionDate.ToString()); scm.Parameters.AddWithValue("@fEngineType", EngaineType.ToString()); scm.Parameters.AddWithValue("@fNoinStock", NoInStock.ToString()); scm.Parameters.AddWithValue("@fNoforCar", NoForCar.ToString()); scm.Parameters.AddWithValue("@fPrice", Price.ToString()); scm.Parameters.AddWithValue("@fRatio", Ratio.ToString()); scm.Parameters.AddWithValue("@fDirham", Dirham.ToString()); scm.Parameters.AddWithValue("@fExtraMoney", ExtraMoney.ToString()); scm.Parameters.AddWithValue("@fImage", Image.ToString()); scm.Parameters.AddWithValue("@fDesc", Desc.ToString()); scm.Parameters.AddWithValue("@fxPartType", PartType.ToString()); scm.Parameters.AddWithValue("@fUnitType", Unit.ToString()); scm.Parameters.AddWithValue("@fxLevel", Level.ToString()); goto A; } 

它只取得了第一个记录,因为你在foreach循环中写下了break

以下是您的代码

  foreach (GridViewRow GVRow in GridView1.Rows) { Name = GVRow.Cells[1].Text; CarType = GVRow.Cells[2].Text; TechnicalNo = GVRow.Cells[3].Text; ProductionDate = GVRow.Cells[4].Text; EngaineType = GVRow.Cells[5].Text; NoInStock = GVRow.Cells[6].Text; NoForCar = GVRow.Cells[7].Text; Price = GVRow.Cells[8].Text; Image = GVRow.Cells[9].Text; Desc = GVRow.Cells[10].Text; PartType = GVRow.Cells[11].Text; Level = GVRow.Cells[12].Text; Unit = GVRow.Cells[13].Text; Ratio = GVRow.Cells[14].Text; Dirham = GVRow.Cells[15].Text; ExtraMoney = GVRow.Cells[16].Text; SqlConnection scn = new SqlConnection(clspublic.GetConnectionString()); using(con) { SqlCommand scm = new SqlCommand(); scm.Connection = scn; scm.CommandText = @"INSERT INTO tblProduct (fName, fxCarType, fProductionDate, fEngineType, fNoinStock, fNoforCar, fPrice,fRatio,fDirham,fExtraMoney, fImage, fDesc, fxPartType, fxLevel,fUnitType,fTechnicalNo) VALUES (@fName,@fxCarType,@fProductionDate,@fEngineType,@fNoinStock,@fNoforCar,@fPrice,@fRatio,@fDirham,@fExtraMoney,@fImage,@fDesc,@fxPartType,@fxLevel,@fUnitType,@fTechnicalNo)"; scm.Parameters.AddWithValue("@fName", Name.ToString()); scm.Parameters.AddWithValue("@fxCarType", CarType.ToString()); scm.Parameters.AddWithValue("@fTechnicalNo", TechnicalNo.ToString()); scm.Parameters.AddWithValue("@fProductionDate", ProductionDate.ToString()); scm.Parameters.AddWithValue("@fEngineType", EngaineType.ToString()); scm.Parameters.AddWithValue("@fNoinStock", NoInStock.ToString()); scm.Parameters.AddWithValue("@fNoforCar", NoForCar.ToString()); scm.Parameters.AddWithValue("@fPrice", Price.ToString()); scm.Parameters.AddWithValue("@fRatio", Ratio.ToString()); scm.Parameters.AddWithValue("@fDirham", Dirham.ToString()); scm.Parameters.AddWithValue("@fExtraMoney", ExtraMoney.ToString()); scm.Parameters.AddWithValue("@fImage", Image.ToString()); scm.Parameters.AddWithValue("@fDesc", Desc.ToString()); scm.Parameters.AddWithValue("@fxPartType", PartType.ToString()); scm.Parameters.AddWithValue("@fUnitType", Unit.ToString()); scm.Parameters.AddWithValue("@fxLevel", Level.ToString()); scm.ExecuteNonQuery(); } 

}

哇,转到….

好吧,你在第一张唱片后打破了你的foreach。 然后你从第一个开始再次开始你的foreach ….

  using (SqlConnection scn = new SqlConnection(clspublic.GetConnectionString())) { foreach (GridViewRow GVRow in GridView1.Rows) { Name = GVRow.Cells[1].Text; CarType = GVRow.Cells[2].Text; TechnicalNo = GVRow.Cells[3].Text; ProductionDate = GVRow.Cells[4].Text; EngaineType = GVRow.Cells[5].Text; NoInStock = GVRow.Cells[6].Text; NoForCar = GVRow.Cells[7].Text; Price = GVRow.Cells[8].Text; Image = GVRow.Cells[9].Text; Desc = GVRow.Cells[10].Text; PartType = GVRow.Cells[11].Text; Level = GVRow.Cells[12].Text; Unit = GVRow.Cells[13].Text; Ratio = GVRow.Cells[14].Text; Dirham = GVRow.Cells[15].Text; ExtraMoney = GVRow.Cells[16].Text; using (SqlCommand scm = scn.CreateCommand()) { scm.CommandText = @"INSERT INTO tblProduct (fName, fxCarType, fProductionDate, fEngineType, fNoinStock, fNoforCar, fPrice,fRatio,fDirham,fExtraMoney, fImage, fDesc, fxPartType, fxLevel,fUnitType,fTechnicalNo) VALUES (@fName,@fxCarType,@fProductionDate,@fEngineType,@fNoinStock,@fNoforCar,@fPrice,@fRatio,@fDirham,@fExtraMoney,@fImage,@fDesc,@fxPartType,@fxLevel,@fUnitType,@fTechnicalNo)"; scm.Parameters.AddWithValue("@fName", Name.ToString()); scm.Parameters.AddWithValue("@fxCarType", CarType.ToString()); scm.Parameters.AddWithValue("@fTechnicalNo", TechnicalNo.ToString()); scm.Parameters.AddWithValue("@fProductionDate", ProductionDate.ToString()); scm.Parameters.AddWithValue("@fEngineType", EngaineType.ToString()); scm.Parameters.AddWithValue("@fNoinStock", NoInStock.ToString()); scm.Parameters.AddWithValue("@fNoforCar", NoForCar.ToString()); scm.Parameters.AddWithValue("@fPrice", Price.ToString()); scm.Parameters.AddWithValue("@fRatio", Ratio.ToString()); scm.Parameters.AddWithValue("@fDirham", Dirham.ToString()); scm.Parameters.AddWithValue("@fExtraMoney", ExtraMoney.ToString()); scm.Parameters.AddWithValue("@fImage", Image.ToString()); scm.Parameters.AddWithValue("@fDesc", Desc.ToString()); scm.Parameters.AddWithValue("@fxPartType", PartType.ToString()); scm.Parameters.AddWithValue("@fUnitType", Unit.ToString()); scm.Parameters.AddWithValue("@fxLevel", Level.ToString()); scm.ExecuteNonQuery(); } } } 

试试这样,

如果所有控件都是标签

 foreach (GridViewRow GVRow in GridView1.Rows) { Label lbl = (Label)GVRow.FindControl("labelID"); string data=lbl.Text; } 
 using (SqlConnection scn = new SqlConnection(clspublic.GetConnectionString())) { foreach (GridViewRow GVRow in GridView1.Rows) { Name = GVRow.Cells[1].Text; CarType = GVRow.Cells[2].Text; TechnicalNo = GVRow.Cells[3].Text; ProductionDate = GVRow.Cells[4].Text; EngaineType = GVRow.Cells[5].Text; NoInStock = GVRow.Cells[6].Text; NoForCar = GVRow.Cells[7].Text; Price = GVRow.Cells[8].Text; Image = GVRow.Cells[9].Text; Desc = GVRow.Cells[10].Text; PartType = GVRow.Cells[11].Text; Level = GVRow.Cells[12].Text; Unit = GVRow.Cells[13].Text; Ratio = GVRow.Cells[14].Text; Dirham = GVRow.Cells[15].Text; ExtraMoney = GVRow.Cells[16].Text; using (SqlCommand scm = scn.CreateCommand()) { scm.CommandText = @"INSERT INTO tblProduct (fName, fxCarType, fProductionDate, fEngineType, fNoinStock, fNoforCar, fPrice,fRatio,fDirham,fExtraMoney, fImage, fDesc, fxPartType, fxLevel,fUnitType,fTechnicalNo) VALUES (@fName,@fxCarType,@fProductionDate,@fEngineType,@fNoinStock,@fNoforCar,@fPrice,@fRatio,@fDirham,@fExtraMoney,@fImage,@fDesc,@fxPartType,@fxLevel,@fUnitType,@fTechnicalNo)"; scm.Parameters.AddWithValue("@fName", Name.ToString()); scm.Parameters.AddWithValue("@fxCarType", CarType.ToString()); scm.Parameters.AddWithValue("@fTechnicalNo", TechnicalNo.ToString()); scm.Parameters.AddWithValue("@fProductionDate", ProductionDate.ToString()); scm.Parameters.AddWithValue("@fEngineType", EngaineType.ToString()); scm.Parameters.AddWithValue("@fNoinStock", NoInStock.ToString()); scm.Parameters.AddWithValue("@fNoforCar", NoForCar.ToString()); scm.Parameters.AddWithValue("@fPrice", Price.ToString()); scm.Parameters.AddWithValue("@fRatio", Ratio.ToString()); scm.Parameters.AddWithValue("@fDirham", Dirham.ToString()); scm.Parameters.AddWithValue("@fExtraMoney", ExtraMoney.ToString()); scm.Parameters.AddWithValue("@fImage", Image.ToString()); scm.Parameters.AddWithValue("@fDesc", Desc.ToString()); scm.Parameters.AddWithValue("@fxPartType", PartType.ToString()); scm.Parameters.AddWithValue("@fUnitType", Unit.ToString()); scm.Parameters.AddWithValue("@fxLevel", Level.ToString()); scm.ExecuteNonQuery(); } } }