2014-01-04 2 views
0

У меня есть любопытная проблема. Когда первый запрос в базе данных ошибочен, но со второй попытки он работает отлично, а не проблемы. Что мне нужно для запуска в первую очередь?Ошибка запроса базы данных в первый раз

Это кнопка действия:

private void button1_Click(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(AcessoBD.ConnectionString); 

    try 
    { 
     con.Open(); 

     SqlCommand cmd = new SqlCommand("con", con); 
     //cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "SELECT * FROM usuario"; 

     //cmd.ExecuteNonQuery(); 

     SqlDataReader dr = cmd.ExecuteReader(); 

     if (dr.Read()) 
     { 
      MessageBox.Show(dr["usuario"].ToString()); 
     } 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
    finally 
    { 
     con.Close(); 
    } 
} 

Класс AcessoBD:

public class AcessoBD 
{ 
     static public String ConnectionString 
     { 
      get 
      { // pega a string de conexão do web.config 
       return ConfigurationManager.ConnectionStrings["Conexao"].ConnectionString; 
       //return WebConfigurationManager.ConnectionStrings["Conexao"].ConnectionString; 
      } 
     } 
    } 

App.config:

<connectionStrings> 
    <add name="Conexao" 
     connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Base\Database.mdf;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 
+0

Что такое ошибка в точности? И вам не нужно использовать 'CommandType.Text'. Это «Текст» как дефолт. –

+0

@Soner Gönül, когда я запускаю первый раз в системе, в час консультации с ошибкой тайм-аута. Но вторая попытка он может сделать запрос на скамейке. –

+0

Мне кажется, что когда он что-то загружает в память, запрос завершается. –

ответ

2

Это из-за этой линии:

cmd.ExecuteNonQuery(); 

просто удалите его.

ExcuteNonQuery используется для выполнения запросов, которые не имеют никакого результата таблицы, как INSERT INTO ...

В этой строке:

MessageBox.Show(dr["usuario"].ToString()); 

, если вы хотите, чтобы получить строку из таблицы, вы должны использовать так:

MessageBox.Show(dr.GetString(colIndex)); 
+0

Я пробовал делать то, что вы мне сказали, все еще не работал. Сначала эта ошибка всегда возникает: http://i.imgur.com/gSDxEi1.png –

+0

@ RonaldAraújo Можно ли перевести его для меня? – HaMeD

+0

@ RonaldAraújo Что вы хотите получить от 'dr [" usuario "]. ToString()'? – HaMeD

0

Да, похоже, у вас есть два вопроса.

Изменить это:

SqlCommand cmd = new SqlCommand("con", con); 
cmd.CommandText = "SELECT * FROM usuario"; 

To:

SqlCommand cmd = new SqlCommand("SELECT * FROM usuario", con); 
Смежные вопросы