我做了一些研究来解决这个错误。但没有运气。请帮助删除此错误。
我正在使用SQL Server 2013
这是我的代码:
$( ".sd"+(count-1)).datepicker({ dateFormat: 'ddMyy', minDate: '0'});
$( ".ed"+(count-1)).datepicker({ dateFormat: 'ddMyy', minDate: '0'});
我还尝试将查询存储在存储过程中,并将值传递给参数,但也会出现相同的错误。
如您所见,查询是基本的。我不知道为什么我会收到这个错误。
请帮忙。非常感谢你。
答案 0 :(得分:1)
如下修改更新查询并在没有阅读器的情况下执行(单个更新语句)。
update tblEmpl
set your fields = your values
where active = 1
and EmplID = parameter
答案 1 :(得分:0)
尝试直接从SQL触发查询。然后检查你的连接字符串。
答案 2 :(得分:0)
尝试使用 WITH(NOLOCK)和不同的SqlCommand实例进行更新查询
//Declarations
SqlCommand CMD;
SqlCommand CMDUPDATE;
SqlDataReader Reader;
private void Save(string EmplID, double MRate, double HRate, double DRate)
{
CMD = new SqlCommand("SELECT * FROM tblEmpl WITH (NOLOCK) WHERE ACTIVE = 1", dbConn.connection);
Reader = CMD.ExecuteReader();
while (Reader.Read())
{
CMDUPDATE = new SqlCommand("UPDATE tblEmpl SET MRate = " + MRate + ", HRate = " + HRate + ", DRate = " + DRate + " WHERE EmplID = '" + EmplID + "'", dbConn.connection);
CMDUPDATE.ExecuteNonQuery();
}
}
答案 3 :(得分:0)
以下是我可以为代码建议的内容:
//Declarations
SqlCommand CMD;
SqlDataReader Reader;
private void Save(string EmplID, double MRate, double HRate, double DRate)
{
CMD = new SqlCommand("SELECT a,b FROM tblEmpl WITH (NOLOCK) WHERE ACTIVE = 1", dbConn.connection);
Reader = CMD.ExecuteReader();
while (Reader.Read())
{
//// TODO : Populate a List of model with all the records
}
//// Foreach records update it
Foreach(var item in <List of models>)
{
CMD = new SqlCommand("UPDATE tblEmpl SET MRate = " + item.MRate + ", HRate = " + item.HRate + ", DRate = " + item.DRate + " WHERE EmplID = '" + item.EmplID + "'", dbConn.connection);
CMD.ExecuteNonQuery();
}
}
答案 4 :(得分:0)
以下是我建议遵循的方法,以避免锁定数据库表。
它是类似于employee表和类的示例代码,其中包含一些列。您需要根据需要进行更改。
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public double Salary { get; set; }
public DateTime DateOfBirth { get; set; }
public bool IsActie { get; set; }
}
using (var conn = new SqlConnection("Your Db Connection String"))
{
SqlCommand cmd = new SqlCommand("SELEC * FROM Employee WHERE IsActive = 1", conn);
cmd.CommandType = CommandType.Text;
conn.Open();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var emp = new Employee();
emp.Id = reader.GetInt32(0);
emp.Name = reader.GetString(1);
emp.Salary = reader.GetDouble(2);
emp.DateOfBirth = reader.GetDateTime(3);
emp.IsActie = reader.GetBoolean(4);
employees.Add(emp);
}
}
SqlCommand updateCommand = new SqlCommand("UPDATE Employee SET Salary=@salary WHERE Id=@id", conn);
updateCommand.Parameters.Add(new SqlParameter("@salary", SqlDbType.Float));
updateCommand.Parameters.Add(new SqlParameter("@id", SqlDbType.Int));
foreach (var employee in employees)
{
double salary = CalculateSalary();
updateCommand.Parameters["@salary"].Value = salary;
updateCommand.Parameters["@id"].Value = employee.Id;
updateCommand.ExecuteNonQuery();
}
}
这可以帮助您解决问题。