2012-07-26 69 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