2012-07-26 62 views
1

当我当我在Oracle SQL客户端运行此查询运行这段代码总是回零,而它返回1Oracle查询不工作在C#

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因为行存在。

回答

2

可能是字母情况 problem.Try 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()); 
+0

这已经是上面的ccase,因为它的编号是142 – 2012-07-26 07:31:18

+0

是这个数字字段吗?不需要用单引号包装价值。 – adatapost 2012-07-26 07:32:14

+0

其字符串字段,但包含数值142 – 2012-07-26 07:32:54

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()); 
+0

我已经尝试过用参数查询,但它仍然没有工作,因为问题与列名 – 2012-07-26 07:25:32

+0

@SOFUser什么问题?你有错误代码吗? “StatusCode”究竟是什么? – ipavlic 2012-07-26 07:33:24

+0

StatusCode =“142”且行存在于数据库中,但它返回的计数为零。而在SQL开发人员中,它返回行计数1 – 2012-07-26 07:34:47