Ошибка ввода строки в неправильном формате не устраняется

#c# #asp.net

#c# #asp.net

Вопрос:

Я пытаюсь получить 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'

и значение запроса

ПОКУПАТЕЛЬ

Комментарии:

1. Не могли бы вы, пожалуйста, показать нам значение StrQuery , когда вы передаете его ExecuteScaler() ?

2. Где именно вы получаете ошибку?

3. @MegaTron: обновил вопрос с более подробной информацией

4. @sachin: я получаю ошибку при выполнении моего запроса.

5. какой тип Type_desc из запроса? если это строка, каковы возможные значения? похоже, что она не конвертируется в int , и именно поэтому она выдает исключение

Ответ №1:

Я полагаю, что исключение выдается в следующей строке?

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

Как вы уже сказали, cmd.ExecuteScalar() возвращает значение "PURCHASER" , в которое затем вы пытаетесь преобразовать int . Это явно невозможно, и это то, о чем говорит исключение.

Пожалуйста, попробуйте так:

 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;
}
  

Комментарии:

1. получение ошибки как cannot implicitly convert type int to string в строке Convert.ToInt32(cmd.ExecuteScalar());

2. @nad Но вы уже говорили: обратите внимание, я не могу изменить функцию масштабирования.

3. @MegaTron: я добавил еще одну функцию и переименовал ее. Я сказал, что не могу изменить функцию, но я могу добавить функцию