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

时间:2011-05-31 09:50:51

标签: c# asp.net gridview

我有一个客户端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;
    } 

5 个答案:

答案 0 :(得分:1)

它只取得了第一条记录,因为在你的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();
 }

}

答案 1 :(得分:0)

哇,Goto ......

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

试试这个,

如果所有控件都是标签

foreach (GridViewRow GVRow in GridView1.Rows)
    {

  Label lbl = (Label)GVRow.FindControl("labelID");

  string data=lbl.Text;

}

答案 4 :(得分:0)

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