2016-10-07 21 views
0

を解決し得ていないていなかった私は、リスト内のString値を取得しようとしているが、入力文字列が正しい形式エラーで

入力文字列が正しい形式ではありませんでしたとエラーを取得しています。

ネット上で役立つリンクがたくさんありますが、私のものは解決していません。

ここに私のコードです。

newRow["EXP_TYPE_ID"] = Convert.ToString(e.Record["EXP_TYPE"]); 
    newRow["EXP_TYPE"] = CF.ExecuteScaler("Select Type_desc from type_mst where Type_Code = 'PAR' and Type_Abbr ='" + Convert.ToString(e.Record["EXP_TYPE"]) + "'").ToString(); 

CF.ExecuteScaler

public string ExecuteScaler(string StrQuery) 
{ 
    DB.EConnection(); 
    cmd = new OracleCommand(StrQuery, DB.conn); 
    cmd.Connection = DB.conn; 
    int val=Convert.ToInt32(cmd.ExecuteScalar()); 
    DB.conn.Close(); 
    string ret = val.ToString(); 
    return ret; 
} 

私はスケーラー機能を変更することはできません。

更新

StrQuery = Select Type_desc from type_mst where Type_Code = 'PAR' and Type_Abbr ='PUR'

と私は例外が次の行にスローされると信じて、クエリ

購入者

+0

あなたは私たちにStrQuery' 'の値を示していただけますか? – Marusyk

+0

正確にエラーが発生していますか? – sachin

+0

@MegaTron:詳細を添えて質問を更新しました – BNN

答えて

1

の値は?

int val=Convert.ToInt32(cmd.ExecuteScalar()); 

あなたは、あなたがintに変換しようとしているcmd.ExecuteScalar()戻り値"PURCHASER"を、言ったように。それは明らかに不可能であり、これは例外であると言います。

そのようにそれを試してください:あなたは `ExecuteScaler()`にそれを渡すとき

public string ExecuteScaler(string StrQuery) 
{ 
    DB.EConnection(); 
    cmd = new OracleCommand(StrQuery, DB.conn); 
    cmd.Connection = DB.conn; 
    string ret = Convert.ToString(cmd.ExecuteScalar()); 
    DB.conn.Close(); 
    return ret; 
} 
+0

'Convert.ToInt32(cmd.ExecuteScalar());' – BNN

+0

@nad、D'OHで暗黙のうちに型intを文字列に変換できないというエラーが発生しました – slawekwin

+1

ありがとうございました。ロジックも理解しています – BNN

関連する問題