更新 SQL 命令不更改数据
Update SQL comand doesn't change the data
我知道这可能是个愚蠢的问题。但是这个查询不起作用。我搜索解决方案超过 1 小时。
请帮忙
public static bool ChangeEventStatus(Connector cn, EventData eventData)
{
int updatedRows = 0;
using (OleDbCommand cmd = cn.CreateCommand())
{
cmd.CommandText = "Update EventList Set IsProcessed = ? Where EventId = ?";
cmd.Parameters.Add("IsProcessed", OleDbType.Boolean).Value = true;
cmd.Parameters.Add("EventId", OleDbType.BigInt).Value = eventData.EventId;
updatedRows = cmd.ExecuteNonQuery();
}
return (updatedRows == 1);
}
我的代码有什么问题。 ChangeEventStatus 方法return 正确,但数据库记录没有改变。
public static bool ChangeEventStatus(Connector cn, EventData eventData)
{
int updatedRows = 0;
using (OleDbConnection conn = new OleDbConnection(someConnectionString));
{
conn.Open();
using (OleDbCommand cmd = cn.CreateCommand())
{
cmd.CommandText = "Update EventList Set IsProcessed = ? Where EventId = ?";
cmd.Parameters.Add("@IsProcessed", OleDbType.Boolean).Value = true;
cmd.Parameters.Add("@EventId", OleDbType.BigInt).Value = eventData.EventId;
updatedRows = cmd.ExecuteNonQuery();
}
return (updatedRows == 1);
}
}
我发现了问题。感谢大家。更新后我忘记了提交事务
我稍微改了一下代码,写了测试。一切正常。
检查:
- 连接字符串
您是否将正确的 EventId 传递给函数?
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
Assert.AreEqual(true, ChangeEventStatus(new EventData() {EventId = 3}));
}
private static bool ChangeEventStatus(EventData eventData)
{
int updatedRows = 0;
using (var cn = new OleDbConnection("Provider=sqloledb;Data Source=localhost;Initial Catalog=FastExperiments;User Id = sa; Password = pass; "))
{
using (OleDbCommand cmd = cn.CreateCommand())
{
cn.Open();
cmd.CommandText = "Update EventList Set IsProcessed = ? Where EventId = ?";
cmd.Parameters.Add("IsProcessed", OleDbType.Boolean).Value = true;
cmd.Parameters.Add("EventId", OleDbType.BigInt).Value = eventData.EventId;
updatedRows = cmd.ExecuteNonQuery();
}
}
return (updatedRows == 1);
}
private class EventData
{
public int EventId { get; set; }
}
}
我知道这可能是个愚蠢的问题。但是这个查询不起作用。我搜索解决方案超过 1 小时。 请帮忙
public static bool ChangeEventStatus(Connector cn, EventData eventData)
{
int updatedRows = 0;
using (OleDbCommand cmd = cn.CreateCommand())
{
cmd.CommandText = "Update EventList Set IsProcessed = ? Where EventId = ?";
cmd.Parameters.Add("IsProcessed", OleDbType.Boolean).Value = true;
cmd.Parameters.Add("EventId", OleDbType.BigInt).Value = eventData.EventId;
updatedRows = cmd.ExecuteNonQuery();
}
return (updatedRows == 1);
}
我的代码有什么问题。 ChangeEventStatus 方法return 正确,但数据库记录没有改变。
public static bool ChangeEventStatus(Connector cn, EventData eventData)
{
int updatedRows = 0;
using (OleDbConnection conn = new OleDbConnection(someConnectionString));
{
conn.Open();
using (OleDbCommand cmd = cn.CreateCommand())
{
cmd.CommandText = "Update EventList Set IsProcessed = ? Where EventId = ?";
cmd.Parameters.Add("@IsProcessed", OleDbType.Boolean).Value = true;
cmd.Parameters.Add("@EventId", OleDbType.BigInt).Value = eventData.EventId;
updatedRows = cmd.ExecuteNonQuery();
}
return (updatedRows == 1);
}
}
我发现了问题。感谢大家。更新后我忘记了提交事务
我稍微改了一下代码,写了测试。一切正常。 检查:
- 连接字符串
您是否将正确的 EventId 传递给函数?
[TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { Assert.AreEqual(true, ChangeEventStatus(new EventData() {EventId = 3})); } private static bool ChangeEventStatus(EventData eventData) { int updatedRows = 0; using (var cn = new OleDbConnection("Provider=sqloledb;Data Source=localhost;Initial Catalog=FastExperiments;User Id = sa; Password = pass; ")) { using (OleDbCommand cmd = cn.CreateCommand()) { cn.Open(); cmd.CommandText = "Update EventList Set IsProcessed = ? Where EventId = ?"; cmd.Parameters.Add("IsProcessed", OleDbType.Boolean).Value = true; cmd.Parameters.Add("EventId", OleDbType.BigInt).Value = eventData.EventId; updatedRows = cmd.ExecuteNonQuery(); } } return (updatedRows == 1); } private class EventData { public int EventId { get; set; } } }