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

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

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);
}

当我运行代码时它没有更新表,可能是什么问题,对于这样的坏问题我很抱歉,我对 sql 很陌生

4

2 回答 2

6

你不使用的一件事myCommand2是......执行它:

myCommand2.ExecuteNonQuery();

好吧,实际上你也应该处理它......

while (rdr.Read())
{
    // ... blah
    using(var myCommand2 = new SqlCommand("InsertHash", myConnection))
    {
        // setup parameters etc
        myCommand2.ExecuteNonQuery();
    }
}

或者,如果这看起来太多工作......一些“精致”的爱:

myConnection.Execute("InsertHash", new {
        FileName = filename,
        Hash = abc.computeHash(filename)
    }, commandType: CommandType.StoredProcedure);
于 2012-07-24T08:43:16.753 回答
3

你还没有执行命令:

myCommand2.ExecuteNonQuery()
于 2012-07-24T08:43:20.793 回答