2013-09-03 12 views
7

Uczę się podstawowych C# w celu opracowania aplikacji, które prowadzą do bazy danych SQL Server. Tworzę bardzo podstawową aplikację, która pozwala mi wpisywać wartości typu 2, a po kliknięciu przycisku wstaw wartości. Chcę również osobny przycisk, który pokazuje mi wszystkie dane z tabeli w ConsoleWindow. Wkładka działa idealnie, moim jedynym problemem jest to, że kiedy klikam przycisk ShowData nic się nie dzieje, jakieś pomysły?Jak korzystać z konsoli Console.WriteLine() w aplikacji Formularze Windows

Mogę sobie wyobrazić, że to będzie coś bardzo prostego, ale jak powiedziałem, wciąż się uczę.

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

Otwórz 'OutputWindow' i zobacz, jak będą tam wyprowadzane twoje dane. Czego oczekujesz poza tym? –

+0

Witamy w StackOverflow. Twój tytuł został zmieniony. Zobacz, ["Czy pytania powinny zawierać" znaczniki "w tytułach?] (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles), gdzie konsensus jest "nie, nie powinni". – Chris

Odpowiedz

17

Console.WriteLine komenda działa tylko w typie aplikacji konsoli. więc przy użyciu aplikacji Windows nie wyświetla wymaganych wyników, wydaje się, że aplikacja jest aplikacją typu Windows.

jeśli chcesz wyświetlać dane wyjściowe w oknie konsoli przy użyciu Console.WriteLine, korzystając z aplikacji do tworzenia formularzy Windows, musisz dodać tę właściwość i wywołać ją z głównego konstruktora formularzy. Następnie otworzy się również z konsolą.

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

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

LUB

W ustawieniach projektu można ustawić typ aplikacji jako Console. Wtedy dostaniesz konsolę i formę.

+0

Pracowałem na absolutną przyjemność, wielkie dzięki. – jeastham1993

+2

Świetnie! Możesz dodać tę linię: AllocConsole(); gdziekolwiek. Konsola wyskoczy, gdy kod zostanie wykonany. Pozostanie otwarty, dopóki go nie zamkniesz (ale zamkniesz, zamykając tę ​​aplikację). Dzięki za to! – SRO

Powiązane problemy