2016-03-15 75 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); 
       }