2

このコードを実行すると常にゼロが返されますが、OracleSQLクライアントでこのクエリを実行すると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ても機能しますが、列名を入力しても機能しないので、行が存在するため1を返す必要があるのに、常にゼロを返すようCODEにすべてを機能させようとしました。"CODE" 'CODE'

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 に答える