【发布时间】:2017-12-28 13:45:32
【问题描述】:
我在更新数据库时遇到问题。
public void UpdateAto(AtoEntity atoEntity)
{
OracleDataAdapter da = new OracleDataAdapter();
string oradb = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=blabla.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=test13)));;User Id=id13;Password=pwd13;";
OracleConnection con = new OracleConnection(oradb);
con.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = con;
cmd.CommandText =
"UPDATE SLAPTEOP SET XOCL ='" + atoEntity.OidOcl +
"',NOM='" + atoEntity.NameAto +
"',ETAT='-1" +
"',NBPAAN='11" +
"',DESCRIPTION='" + atoEntity.DescriptionAto +
"',APPORTEUR='" + atoEntity.ContributorAto +
"',AUTEUR_MISEAJOUR='" + atoEntity.AuthorUpdateAto +
"',DATE_MISEAJOUR=SYSDATE WHERE OID ='" + atoEntity.OidAto + "'";
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
con.Dispose();
}
请求不错,写的不带参数,简单点。它已经在 SGBD 上进行了测试。选择和插入请求也可以。
当我执行cmd.ExecuteNonQuery() 时,数据库中没有任何反应。它会循环播放。
添加了一个 try/catch 块,但未捕获任何错误或异常。
【问题讨论】:
-
这个很不清楚。 POST 或 GET 与此有什么关系?捕获异常并记录或调试它们。异常详细信息将告诉您出了什么问题。并且请使用参数化查询来防止sql注入和语法错误。
-
cmd.ExecuteNonQuery应该返回更新的行数。你可以把这些东西变成一个try catch,然后edit你的异常变成你的问题吗? -
OracleDataAdapter da不是必需的。 -
如果没有更新行,则 ExecuteNonQuery 返回 0,如果命令修改了某些行,则返回 >0。请检查 ExecuteNonQuery 的返回值。如果它为零,则 WHERE 子句找不到要更新的记录。这意味着您用于 Oid 的值是错误的(您确定此 OID 是字符串吗?)
标签: c# database oracle sql-update command