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()