簡體   English   中英

asp.net在while循環中將數據插入SQL Server數據庫

[英]asp.net inserting data into SQL Server db in while loop

我想將數據從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.ExecuteNonQuery忽略(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();
    }

暫無
暫無

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

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