2016-03-15 76 views
0

我用這個查詢字符串:SQL語句引起錯誤

string queryString = "SELECT email_uzivatele from Reklama where email_uzivatele like '%" + @email_uzivatele + "%'"; 

而且在控制檯應用程序進行測試。

當字符串是這樣的:

string queryString = "SELECT * from Reklama where email_uzivatele like '%" + @email_uzivatele + "%'"; 

它工作正常。但是,當我選擇這樣的特定列:

string queryString = "SELECT email_uzivatele from Reklama where email_uzivatele like '%" + @email_uzivatele + "%'"; 

這是行不通的,它是導致此錯誤:

System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.Int32.Parse(String s)
at Smart.Advertising.DatabaseLayer.AdvertDatabaseLayer.SelectByEmail(String email_uzivatele) in f:\BP\SmartAdvertising.GuiMvc\Smart.Advertising.DatabaseLayer\AdvertDatabaseLayer.cs:line 228

我不明白爲什麼....

請你可以幫我嗎?

編輯:這是我的控制檯aplication更多的代碼:

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      AdvertDatabaseLayer.Instance.SelectByEmail("jan"); 
     } 
    } 
} 

而此行是導致錯誤:

AdvertDatabaseLayer.Instance.SelectByEmail("jan"); 

這是我使用的查詢字符串數據庫層:

public List<Advert> SelectByEmail(string email_uzivatele) 
{ 
    string queryString = "SELECT email_uzivatele from Reklama where email_uzivatele like '%" + @email_uzivatele + "%'"; 
    SqlCommand command = new SqlCommand(queryString, Connection); 

    command.Parameters.AddWithValue("@email_uzivatele", ""); 

    try 
    { 
     SqlDataReader reader = command.ExecuteReader(); 
     List<Advert> advert = new List<Advert>(); 
     while (reader.Read()) 
     { 
      Advert a = new Advert(); 
      a.id_reklamy = int.Parse(reader[0].ToString()); 
      a.nazev_reklamy = reader[1].ToString(); 
      a.typ_reklamy = reader[2].ToString(); 
      a.cena_reklamy = int.Parse(reader[3].ToString()); 
      a.email_uzivatele = reader[4].ToString(); 
      a.datumz = reader[5].ToString(); 
      a.datumk = reader[6].ToString(); 

      Console.WriteLine("email_uzivatele: " + " " + " " + a.email_uzivatele); 

      advert.Add(a); 
     } 

     reader.Close(); 
     return advert; 
    } 
    catch (Exception ex) 
    { 
     chyba.zapsat_do_souboru(ex.Message); 
     Console.OpenStandardOutput(); 
     Console.WriteLine(ex); 
     //zalogovat chybu 
     return null; 
    } 
} 
+1

請發佈更多的代碼從你的控制檯應用程序。這可能是您如何閱讀輸入的問題。 – BPS

+0

現在我編輯了我的帖子,並添加了更多來自控制檯應用程序的代碼。 –

+0

添加的代碼似乎與您的SQL查詢沒有任何關係?!? –

回答

0

我發現解決方案的問題是我遍歷所有參數,但在查詢字符串中我只有一個參數解決方案是這樣的:

while (reader.Read()) 
       { 

        Advert a = new Advert(); 
        a.email_uzivatele = reader[0].ToString(); 



        Console.WriteLine("email_uzivatele: " + " " + " " + a.email_uzivatele); 

        advert.Add(a); 
       }