[C#] Aus DB-Spalte in Textbox

12/21/2016 20:02 Entonsammler#1
Moin,
ich verzweifel momentan an den Problem das alle Inhalte aus einer einzelnen Spalte in eine Textbox sollen (am besten nach jedem Inhalt ein Zeilenumbruch).
Ich nutze für die Datenbank SQLite.


Mein Versuch:
Code:
private void Button1_Click(object sender, EventArgs e)
{
    string dataSource = "Data.sql";
    SQLiteConnection connection = new SQLiteConnection();
    connection.ConnectionString = "Data Source=" + dataSource;
    connection.Open();
    SQLiteCommand command = new SQLiteCommand(connection);
    SQLiteDataReader reader = null;


        command.CommandText = "SELECT Beschreibungen FROM Tabelle";
        reader = command.ExecuteReader();



        while (reader.Read())
        {

                textbox1.Text = reader["Beschreibungen"].ToString();

        }
    command.Dispose();
    connection.Close();
    connection.Dispose();
}
Das Ergebniss:
Es kopiert in die Textbox den letzen Inhalt der Spalte und nicht alles.

Würde mich über Hilfe freuen :).
12/21/2016 21:53 schnewin#2
Du kannst einfach mit Hilfe der [Only registered and activated users can see links. Click Here To Register...] deine Zeichenketten zusammensetzen, inklusive Zeilenumbrüche.

Code:
StringBuilder stringBuilder = new StringBuilder();

while (reader.Read())
	{
		stringBuilder.Append(reader["Beschreibungen"].ToString());
		stringBuilder.AppenLine();
	}
	
textbox1.Text = stringBuilder.ToString();
Ansonsten kannst Du auch mit + die strings verketten. Siehe [Only registered and activated users can see links. Click Here To Register...]
12/23/2016 15:47 Andi#3
Du überschreibst bei jedem lesen der Infos aus der DB deine Textbox.

Nutze einfach ein += und dein Problem sollte gelöst sein. Somit speicherst du alle Infos hintereinander in der gleichen Textbox bzw. String.
Zeilenumbrüche kannst du mit einem \n in Strings einfügen. Nutzt du eine mehrzeilige Textbox? Ich würde eine richtTextBox empfehlen.

Code:
private void Button1_Click(object sender, EventArgs e)
{
    string dataSource = "Data.sql";
    SQLiteConnection connection = new SQLiteConnection();
    connection.ConnectionString = "Data Source=" + dataSource;
    connection.Open();
    SQLiteCommand command = new SQLiteCommand(connection);
    SQLiteDataReader reader = null;


        command.CommandText = "SELECT Beschreibungen FROM Tabelle";
        reader = command.ExecuteReader();



        while (reader.Read())
        {

                textbox1.Text += reader["Beschreibungen"].ToString() + "\n";

        }
    command.Dispose();
    connection.Close();
    connection.Dispose();
}
LG
12/24/2016 12:10 schnewin#4
Quote:
Originally Posted by aftercode View Post
Nutze einfach ein += und dein Problem sollte gelöst sein. Somit speicherst du alle Infos hintereinander in der gleichen Textbox bzw. String.
Zeilenumbrüche kannst du mit einem \n in Strings einfügen.
[...]
Es sei noch hinzugefügt, dass bei einer hohen Anzahl an Verkettungen die StringBuilder-Klasse eine viel bessere Performance vorweist als der += Operator. (Siehe [Only registered and activated users can see links. Click Here To Register...])

@TE: Eine weitere Möglichkeit wäre der Umstieg auf ein ORM, wie z.B. das EntityFramework. ([Only registered and activated users can see links. Click Here To Register...])
12/28/2016 15:12 Strew#5
Vielleicht hilft dir ja meine SQL Klasse ein wenig.

Code:
using System;
using System.Data;
using System.Data.SqlClient;


namespace SJP_Grst_Lib
{
    public class SQLStuff
    {
        /// <summary>
        /// Funktion zum erzeugen eines Connectionstrings aus verschiedenen Parametern
        /// </summary>
        /// <param name="SQLServer"></param>
        /// <param name="SQLUser"></param>
        /// <param name="SQLPassword"></param>
        /// <param name="SQLDatabase"></param>
        /// <returns></returns>
        public static string ConString(string SQLServer, string SQLUser, string SQLPassword, string SQLDatabase)
        {
            return @"Data Source=" + SQLServer + ";Initial Catalog=" + SQLDatabase + "; Integrated Security=false; User ID = " + SQLUser + "; Password = " + SQLPassword + ";MultipleActiveResultSets=true;Connection Timeout=30;";
        }


        /// <summary>
        /// Funktion zum Aufbauen der Serververbindung. (Wenn "return null" -> Fehler beim Verbindungsaufbau)
        /// </summary>
        /// <param name="conString"></param>
        /// <returns>con</returns>
        public static SqlConnection ServerConnection(string conString)
        {
            //Deklaration der SQLConnection Variable "con"
            SqlConnection con = null;

            //Prüfen ob der Connectionstring leer ist
            if (conString != string.Empty)
            {
                //Versuche den Verbindungsaufbau zur Datenbank
                try
                {
                    con = new SqlConnection(conString);
                    con.Open(); 
                }
                catch (Exception ex)
                {
                    Console.WriteLine("SQLStuff.ServerConnection: Fehler beim Verbindungsaufbau. (Fehlercode: 001)");
                }

                //Prüfe ob der Verbindungsaufbau erfolgreich war, wenn nicht -> Freigeben
                if (con.State != ConnectionState.Open)
                {
                    try
                    {
                        con.Close();
                        con = null;
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("SQLStuff.ServerConnection: Fehler beim Freigeben von 'con'. (Fehlercode: 003)");
                    }
                }
            }
            else
            {
                Console.WriteLine("SQLStuff.ServerConnection: conString ist leer. (Fehlercode: 002)");
            }

            return con;
        }


        /// <summary>
        /// Funktion zum auslesen einer Tabelle in eine DataTable Variable
        /// </summary>
        /// <param name="con"></param>
        /// <param name="query"></param>
        /// <returns></returns>
        public static DataTable fillDataTable(SqlConnection con, String query)
        {
            DataTable dt = new DataTable();

            //Funktion zum Prüfen der SQL Verbindung
            con = checkConnection(con);

            //Prüfung ob Verbindung offen ist, wenn ja -> Lese Daten in DataTable
            if (ConnectionState.Open == con.State)
            {
                try
                {
                    SqlCommand cmd = new SqlCommand(query, con);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dt);
                    con.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("SQLStuff.fillDataTable: Fehler beim füllen des DataTable's. (Fehlercode: 002)");
                    con.Close();
                }
            }

            return dt;
        }


        /// <summary>
        /// Funktion zum manipulieren von Daten in einer SQL Datenbank
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="con"></param>
        public static void insOrUpOrDelCmd(String cmd, SqlConnection con)
        {
            con = checkConnection(con);
            
            if (con.State == ConnectionState.Open)
            {
                try
                {
                    SqlCommand myCommand = new SqlCommand(cmd, con);
                    myCommand.ExecuteNonQuery();
                    con.Close();
                }
                catch(Exception ex)
                {
                    Console.WriteLine("SQLStuff.insOrUpOrDelCmd: Fehler in der SQL Query oder beim Einschreiben der Informationen. (Fehlercode: 001)");
                    con.Close();
                }
            }
            else
            {
                Console.WriteLine("SQLStuff.insOrUpOrDelCmd: Die SQL Verbindung ist nicht geöffnet. (Fehlercode: 002)");
                con.Close();
            }

        }


        /// <summary>
        /// Prüfen ob die SQL Verbindung geöffnet ist.
        /// </summary>
        /// <param name="con"></param>
        /// <returns></returns>
        public static SqlConnection checkConnection(SqlConnection con)
        {
            if (ConnectionState.Open != con.State)
            {
                try
                {
                    con.Open();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("SQLStuff.fillDataTable: Fehler beim Verbindungsaufbau. (Fehlercode: 001)");
                    con.Close();
                }
            }
            else
            {
                Console.WriteLine("SQLStuff.checkConnection: Die Verbindung ist bereits geöffnet. (Statuscode: 001)");
            }

            return con;
        }
    }
}