C# asp.net在while循环中将数据插入SQL Server数据库
我想将数据从Excel工作表导入SQL Server数据库(2008)。我已经成功地测试了从xls文件获取数据的代码。但是,我无法将这些数据插入db表。以下是代码的一部分: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
while (ctecka.Read())
{
exJmeno = ctecka[0].ToString();
exPrijmeni = ctecka[1].ToString();
Response.Write(exJmeno + " " + exPrijmeni + " ");
pridano = vlozSQL.ExecuteNonQuery();
}
ctecka是DbDataReader对象,它包含excel工作表中的数据
exJmeno和exPrijmeni是字符串,其中插入了列中的数据
问题:
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();是必不可少的(约阿希姆·伊萨克森)