C# asp.net在while循环中将数据插入SQL Server数据库

C# asp.net在while循环中将数据插入SQL Server数据库,c#,asp.net,sql-server,import,C#,Asp.net,Sql Server,Import,我想将数据从Excel工作表导入SQL Server数据库(2008)。我已经成功地测试了从xls文件获取数据的代码。但是,我无法将这些数据插入db表。以下是代码的一部分: while (ctecka.Read()) { exJmeno = ctecka[0].ToString(); exPrijmeni = ctecka[1].ToString(); Response.Write(exJme

我想将数据从Excel工作表导入SQL Server数据库(2008)。我已经成功地测试了从xls文件获取数据的代码。但是,我无法将这些数据插入db表。以下是代码的一部分:

        while (ctecka.Read())
        {
            exJmeno = ctecka[0].ToString();
            exPrijmeni = ctecka[1].ToString();
            Response.Write(exJmeno + " " + exPrijmeni + " ");
            pridano = vlozSQL.ExecuteNonQuery();
        }
ctecka是DbDataReader对象,它包含excel工作表中的数据

exJmenoexPrijmeni是字符串,其中插入了列中的数据

问题:

Response.write将我需要的数据写入页面

vlozSQL.ExecuteOnQuery忽略(exJmeno和exPrijmeni)中的数据,并将空列插入数据库中的表中

以下是一些定义:

string InsertSQL = "INSERT INTO users (name, surname) VALUES (@name,@surname)";
vlozSQL.Parameters.AddWithValue("@name", exJmeno);
vlozSQL.Parameters.AddWithValue("@surname", exPrijmeni);
编辑

    string exJmeno = "";
    string exPrijmeni = "";
    string InsertSQL = "INSERT INTO users (name, surname) VALUES (@name,@surname)";
    SqlConnection sqlconn = new SqlConnection(SQLpripoj);
    SqlCommand vlozSQL = new SqlCommand(InsertSQL, sqlconn);
    vlozSQL.Parameters.AddWithValue("@name", exJmeno);
    vlozSQL.Parameters.AddWithValue("@surname", exPrijmeni);

    try
    {
        spojeni.Open();
        DbDataReader ctecka = prikaz.ExecuteReader();

        sqlconn.Open();
        while (ctecka.Read())
        {
            exJmeno = ctecka[0].ToString();
            exPrijmeni = ctecka[1].ToString();
            Response.Write(exJmeno + " " + exPrijmeni + " ");
            pridano = vlozSQL.ExecuteNonQuery();
        }
    }
    finally
    {
        spojeni.Close();
        sqlconn.Close();
        Label2.Text = pridano.ToString();
    }

由于字符串在C#中是不可变的,因此循环中的赋值实际上不会更改参数,每次都必须添加它们。你需要做一些事情,比如

while (ctecka.Read())
{
    exJmeno = ctecka[0].ToString();
    exPrijmeni = ctecka[1].ToString();
    Response.Write(exJmeno + " " + exPrijmeni + " ");
    vlozSQL.Parameters.Clear();
    vlozSQL.Parameters.AddWithValue("@name", exJmeno);
    vlozSQL.Parameters.AddWithValue("@surname", exPrijmeni);
    pridano = vlozSQL.ExecuteNonQuery();
}

在while循环中移动这部分代码

vlozSQL.Parameters.AddWithValue("@name", exJmeno);
vlozSQL.Parameters.AddWithValue("@surname", exPrijmeni);
例如:

while (ctecka.Read())
    {
        exJmeno = ctecka[0].ToString();
        exPrijmeni = ctecka[1].ToString();
        vlozSQL.Parameters.AddWithValue("@name", exJmeno);
         vlozSQL.Parameters.AddWithValue("@surname", exPrijmeni);
        Response.Write(exJmeno + " " + exPrijmeni + " ");
        pridano = vlozSQL.ExecuteNonQuery();
    }

我们需要看到更多的代码来理解正在发生的事情,特别是SqlClient代码。感谢您的回复,但是行vlozSQL.Parameters.Clear();是必不可少的(约阿希姆·伊萨克森)