2

当我运行此代码时,它总是返回零,而当我在 oracle sql 客户端中运行此查询时,它返回 1。

 var strSQL = string.Format("SELECT COUNT(*) FROM GANTNER.GAT_REASONS WHERE CODE ='{0}'", StatusCode);    
 objCmd = new OracleCommand(strSQL, objConn);
 objCmd.CommandType = CommandType.Text;
 int val = int.Parse(objCmd.ExecuteScalar().ToString());

为了尝试,我删除了列名上的条件CODE并且它有效,但是当我输入列名CODE时它没有然后我试图让"CODE" 'CODE'所有不工作的东西总是返回零,而它应该返回 1,因为行存在。

4

2 回答 2

3

可能是字母大小写问题。UPPER/UCASE尝试功能进行比较。

var strSQL = string.Format("SELECT COUNT(*) FROM GANTNER.GAT_REASONS
              WHERE UCASE(CODE) ='{0}'", StatusCode.ToUpper());    

或者

var strSQL ="SELECT COUNT(*) FROM GANTNER.GAT_REASONS WHERE CODE =:code";
objCmd = new OracleCommand(strSQL, objConn);
objCmd.Parameters.AddWithValue("code",StatusCode.ToUpper());
于 2012-07-26T07:25:24.493 回答
1

尝试这个:

OracleCommand cmd = conn.createCommand();
// parametrized sql query
cmd.CommandText = "SELECT COUNT(*) FROM GANTNER.GAT_REASONS WHERE CODE = :status";
// add parameter for the query
cmd.Parameters.AddWithValue("status", StatusCode); 
int val = int.Parse(objCmd.ExecuteScalar().ToString());
于 2012-07-26T07:22:16.057 回答