Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp插入错误_C#_Asp.net_.net_Sql Server - Fatal编程技术网

C# Asp插入错误

C# Asp插入错误,c#,asp.net,.net,sql-server,C#,Asp.net,.net,Sql Server,我是Asp.net新手,我尝试从文件中读取数据并存储到数据库 文件格式为:(读数为测试,良好) 您能否识别错误I'm lost plz您正在循环,每次循环运行时都添加新参数。因此,第二次和后续调用将失败 可以为每个循环设置新的命令参数,也可以只创建一次参数,然后为每个循环重新分配这些参数 这里是第二个选项—重用相同的参数—它在循环场景中的性能会更好,正如您所看到的: var connexion = new SqlConnection(@"Data Source=..."); v

我是Asp.net新手,我尝试从文件中读取数据并存储到数据库 文件格式为:(读数为测试,良好)


您能否识别错误I'm lost plz

您正在循环,每次循环运行时都添加新参数。因此,第二次和后续调用将失败

可以为每个循环设置新的命令参数,也可以只创建一次参数,然后为每个循环重新分配这些参数

这里是第二个选项—重用相同的参数—它在循环场景中的性能会更好,正如您所看到的:

    var connexion = new SqlConnection(@"Data Source=..."); 
    var command = connexion.CreateCommand();
    var requete = "INSERT INTO commande VALUES(@idpr,@date)";
    // I've assumed the types - double check
    var paramidprod = new SqlParameter("@idpr", SqlDbType.VarChar);
    var paramdate = new SqlParameter("@date", SqlDbType.DateTime);
    command.Parameters.Add(paramidprod);
    command.Parameters.Add(paramdate);
    command.CommandText = requete;
    connexion.Open(); 

    foreach (string line in lines)
    {
       if (line.Contains('*')) break;
       String[] l = line.Split(';');
       paramidprod.Value = line.Substring(0,2);
       paramdate.Value = l[1];
       command.ExecuteNonQuery();
    }
    connexion.Close();
    connexion.Dispose();

如果您插入了大量的记录,您也可以考虑每隔1000个插入提交事务。

请注意,在每次迭代中,您都将相同的参数插入到 SqLCuths< /Cord>对象中。在此之前,您需要清除前面的选项:

foreach (string line in lines)
{
    command.Parameters.Clear();
    var connexion = new SqlConnection(@"Data Source=..."); 
    var command = connexion.CreateCommand();
    var requete = "INSERT INTO commande VALUES(@idpr,@date)";
    // I've assumed the types - double check
    var paramidprod = new SqlParameter("@idpr", SqlDbType.VarChar);
    var paramdate = new SqlParameter("@date", SqlDbType.DateTime);
    command.Parameters.Add(paramidprod);
    command.Parameters.Add(paramdate);
    command.CommandText = requete;
    connexion.Open(); 

    foreach (string line in lines)
    {
       if (line.Contains('*')) break;
       String[] l = line.Split(';');
       paramidprod.Value = line.Substring(0,2);
       paramdate.Value = l[1];
       command.ExecuteNonQuery();
    }
    connexion.Close();
    connexion.Dispose();
foreach (string line in lines)
{
    command.Parameters.Clear();