2013-09-03 17 views
7

Mi sto insegnando come base C# per sviluppare applicazioni che collegano a un database SQL Server. Sto creando un'applicazione molto semplice che mi consente di digitare 2 valori in un modulo e al clic del pulsante inserisci i valori. Voglio anche un pulsante separato che mi mostra tutti i dati dalla tabella in ConsoleWindow. L'inserto funziona perfettamente, il mio unico problema ora è che quando clicco sul pulsante ShowData non succede niente, qualche idea?Come utilizzare Console.WriteLine() nell'applicazione Windows Form

Posso immaginare che sarà qualcosa di semplice ma come ho detto sto ancora imparando.

public partial class InsertNames : Form 
{ 
    public InsertNames() 
    { 
     InitializeComponent(); 
    } 

    private SqlConnection thisConnection = new SqlConnection("Data Source=(localdb)\\V11.0;database=Dev"); 

    private void FirstName_TextChanged(object sender, EventArgs e) 
    { 
     string firstName = FirstName.Text; 
    } 

    private void LastName_TextChanged(object sender, EventArgs e) 
    { 
     string lastName = LastName.Text; 
    } 

    private void Insert_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      thisConnection.Open(); 
      SqlCommand insertCommand = thisConnection.CreateCommand(); 
      insertCommand.CommandText = "INSERT INTO Names (FirstName,LastName) Values (@FirstName, @LastName)"; 
      insertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar, 50).Value = FirstName.Text; 
      insertCommand.Parameters.Add("@LastName", SqlDbType.VarChar, 50).Value = LastName.Text; 
      insertCommand.ExecuteNonQuery(); 

      Console.WriteLine(insertCommand); 

      thisConnection.Close(); 
     } 
     catch (SqlException excep) 
     { 
      Console.WriteLine(excep.Message); 
     } 
    } 

    private void ShowData_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      thisConnection.Open(); 

      SqlDataReader myReader = null; 
      SqlCommand selectCommand = new SqlCommand("Select * from Names", thisConnection); 

      myReader = selectCommand.ExecuteReader(); 
      while (myReader.Read()) 
      { 
       Console.WriteLine(myReader["FirstName"].ToString()); 
       Console.WriteLine(myReader["LastName"].ToString()); 
      } 

      thisConnection.Close(); 
     } 
     catch (SqlException excep) 
     { 
      Console.WriteLine(excep.Message); 
     } 
    } 
} 
+0

Aprire 'OutputWindow' e vedere i dati verranno emessi lì. Cosa ti aspetti oltre a questo? –

+0

Benvenuti in StackOverflow. Il tuo titolo è stato modificato. Per favore vedi, ["Le domande dovrebbero includere" tag "nei loro titoli?"] (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles), dove il consenso è "no, non dovrebbero". – Chris

risposta

17

Console.WriteLine il comando funziona solo in tipo di applicazione console. quindi utilizzando l'app di Windows non viene visualizzato l'output richiesto, sembra che l'applicazione sia un'applicazione di Windows.

se si desidera visualizzare l'output sulla finestra della console utilizzando Console.WriteLine con l'applicazione del modulo di Windows, è necessario aggiungere questa proprietà e richiamarla dal costruttore del modulo principale. Quindi verrà aperta anche con la console.

 public InsertNames() 
    { 
     AllocConsole(); 
     InitializeComponent(); 
    } 

     [System.Runtime.InteropServices.DllImport("kernel32.dll")] 
     private static extern bool AllocConsole(); 

O

Nelle impostazioni di progetto è possibile impostare il tipo di applicazione come Console. Quindi riceverai console e modulo.

+0

Ha funzionato in modo assoluto, grazie mille. – jeastham1993

+2

Grande! È possibile aggiungere questa riga: AllocConsole(); dovunque. La console verrà visualizzata quando verrà eseguito il codice. Rimarrà aperto finché non lo chiuderai (ma chiudendolo chiuderai questa applicazione). Grazie per questo! – SRO

Problemi correlati