我想知道为什么这段代码不起作用;它总是返回零(任何受影响的行)。该数据库是一个Access数据库。我可以插入和删除但不更新数据。它是一个Windows窗体C#应用程序。SQL更新命令总是返回0
string sql = "";
try
{
string[] parametrosNomes = new string[3];
parametrosNomes[0] = "@CatId";
parametrosNomes[1] = "@CatNome";
parametrosNomes[2] = "@CatDescricao";
object[] parametrosValores = new object[3];
parametrosValores[0] = oCateg.categoriaid;
parametrosValores[1] = oCateg.categoriaNome;
parametrosValores[2] = oCateg.categoriaDescricao;
sql = "UPDATE Categorias SET categoriaNome = @CatNome, [email protected] Where [email protected]";
int retorno = AcessoDB.CRUD(sql, parametrosNomes, parametrosValores);
return retorno;
}
catch (Exception ex)
{
throw ex;
}
注:CRUD方法,我只填充参数和执行
int retorno = command.ExecuteNonQuery();
return retorno;
我核实了所有参数,字段的名称和该命令没有错误执行,但总是返回零并执行的SqlCommand不更新数据库中的表。
我不能看到什么错在我的代码,但它doesn't工作。
任何人都可以打开我的眼睛?
不确定访问数据库..连接字符串或什么?它实际上是否有任何记录,其中categorialId = @ CatId? – CularBytes
你有没有试过你的查询在你的数据库管理器,如SSMS?它在那里更新?你调试了你的代码吗?当你添加参数值时,你的查询是什么样的?什么是“AcessoDB”和“CRUD”?你在使用OleDb .Net Provider吗?如果您使用OLE DB,它不支持命名参数。您需要按照您将其添加到命令中的顺序提供它们。 –
发布'AcessoDB.CRUD'的代码,人们可能会帮助你。我们缺乏通过TCP/IP阅读您的想法来调试代码的能力。 – nvoigt