Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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# 在sql中更新表_C#_Sql - Fatal编程技术网

C# 在sql中更新表

C# 在sql中更新表,c#,sql,C#,Sql,这是我的存储过程,我发送了一些数据 ALTER PROCEDURE InsertHash @FileName varchar(max), @Hash varchar(max) AS UPDATE tabletest SET deneme1 = @Hash, deneme2 =@FileName 当我运行代码时,它没有更新表,可能是什么问题,抱歉,对于这样糟糕的问题,我对sql非常陌生,使用myCommand2时,有一件事是你不知道的。。。执行它: while (rdr.Re

这是我的存储过程,我发送了一些数据

ALTER PROCEDURE InsertHash
    @FileName varchar(max),
    @Hash  varchar(max)
AS
UPDATE tabletest 
SET deneme1 = @Hash, deneme2 =@FileName

当我运行代码时,它没有更新表,可能是什么问题,抱歉,对于这样糟糕的问题,我对sql非常陌生,使用
myCommand2
时,有一件事是你不知道的。。。执行它:

while (rdr.Read())
{
    string filename = @"\\" + rdr.GetString(3);
    filename = System.IO.Path.Combine(filename, rdr.GetString(2));
    filename = System.IO.Path.Combine(filename, rdr.GetString(1));
    computeHashh1 abc = new computeHashh1();
    Console.WriteLine(abc.computeHash(filename));
    SqlCommand myCommand2 = new SqlCommand("InsertHash", myConnection);
    myCommand2.CommandType = CommandType.StoredProcedure;
    SqlParameter param = new SqlParameter("@FileName", filename);
    myCommand2.Parameters.Add(param);
    SqlParameter param2 = new SqlParameter("@Hash", abc.computeHash(filename));
    myCommand2.Parameters.Add(param2);
}
其实你也应该把它处理掉

myCommand2.ExecuteNonQuery();
或者,如果这似乎太多的工作。。。一些“整洁”的爱:


您尚未执行以下命令:

myConnection.Execute("InsertHash", new {
        FileName = filename,
        Hash = abc.computeHash(filename)
    }, commandType: CommandType.StoredProcedure);

当心!那张表应该有多少条记录?没有where子句的存储过程将更新所有内容。@levanlevi我想我们需要的所有内容都已经存在了…我是说打开连接,正在执行…我犯了这个错误:已经有一个打开的DataReader与这个命令关联,必须先关闭它。@tipi是,正常情况下(除非启用了MARS)读卡器打开时,无法执行其他命令。这通常意味着首先缓冲数据,例如:将所有数据读入一个列表,然后枚举列表(现在读卡器已关闭)执行其他操作。不过,要小心N+1
myConnection.Execute("InsertHash", new {
        FileName = filename,
        Hash = abc.computeHash(filename)
    }, commandType: CommandType.StoredProcedure);
myCommand2.ExecuteNonQuery()