Zum Inhalt springen

c# ! Anfänger DataGridView TreeView mit Sqllite


michmarc

Empfohlene Beiträge

Hallo zusammen,

Mache zurzeit ein Praktikum bei einer It Firma.

Etwas kleines über mich:

Ich will eine Ausbildung als Anwendungsentwickler ,

dieses Praktikum würde es mir eventuell ermöglichen eine Stelle zubekommen.

Jedoch hab ich noch nie mit C# gearbeitet und wurde dementsprechend von meinem Arbeitgeber ins kalte Wasser geworfen.

Meine Programmiererfahrungen beschränken sich eher auf C++.

Beschreibung:

Folgende Aufgabe hab ich bekommen:

Einen Passwort Manager erstellen in einer WindowsFormsApplication.

Nun habe ich mir gedacht ich erstelle einen TreeView und einen DataGridView.

Habe Mehrere Buttons noch hinzugefügt und eine Sqllite Datenbank angelegt auswelcher ich auch Daten abrufen kann.

So das Problem ist hier...

Wenn ich einen Datensatz hinzufügen will sprich ich schreibe den Datensatz in die Tabelle und da dachte, ich mir da sollte doch ein Button funktionieren mit der Funktion Speichern.

welches ich dann aufgebaut habe mit Insert .... jedoch funktioniert dies nicht und dort wollte ich euch mal nach Hilfe fragen.

Desweiteren hab ich einen Button Namens Update bzw.Aktualiesieren dieser soll vorhandene Datensätze nachdem ich sie im DataGridview geändert habe einfach nur abspeichern.

Sprich laut meinem "Arbeitgeber" Update .... das funktioniert ebenfalls nicht ..

Weitere Verbesserungen nehme ich sehr gerne an.

Falls jemand das komplette Programm haben will einfach bescheid sagen :)

Danke schonmal im vorraus!


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SQLite;


namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        private SQLiteConnection sqlconn;

        private SQLiteCommand sqlCmd;


        public Form1()

        {

            InitializeComponent();

        }




        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)

        {


            UserTabelle.Rows.Clear();

            sqlCmd = new SQLiteCommand(sqlconn);

            sqlCmd.CommandText = String.Format("select User.User,User.Passwort,Typ.Name,User.LetzteAenderung,User.URL,User.EMail,User.Sonstiges from User,Typ where ( GruppeID={0} or {0}=0) and Typ.ID=User.TypID",e.Node.Name);

            SQLiteDataReader sqlUser = sqlCmd.ExecuteReader();

            while (sqlUser.Read())

            {

                UserTabelle.Rows.Add(sqlUser.GetString(0),sqlUser.GetString(1),sqlUser.GetString(2),sqlUser.GetDateTime(3),sqlUser.GetString(4),sqlUser.GetString(5),sqlUser.GetString(6));

            }



            sqlUser.Close();

            sqlUser.Dispose();

        }


        private void Form1_Load(object sender, EventArgs e)

        {

            string connString = String.Format("Data Source={0}\\test.sqlite;Version=3;Pooling=False;Max Pool Size=100;", Application.StartupPath);

            sqlconn = new SQLiteConnection(connString);

            sqlconn.Open();


            sqlCmd = new SQLiteCommand(sqlconn);

            sqlCmd.CommandText = "select * from Gruppe";

            SQLiteDataReader sqlReader = sqlCmd.ExecuteReader();

            while (sqlReader.Read())

            {

                Gruppe.Nodes.Add(sqlReader.GetInt32(0).ToString(), sqlReader.GetString(1));

            }



            sqlReader.Close();

            sqlReader.Dispose();


        }


        private void NeueGrp_Click(object sender, EventArgs e)

        {



            Gruppe.Nodes.Add(""+textBox2.Text);

            UserTabelle.Rows.Clear();


        }


        private void NewUs_Click(object sender, EventArgs e)

        {

            UserTabelle.Rows.Clear();

            UserTabelle.Rows.Add("User eingeben bitte");



        }




        private void Speichern_Click(object  sender, EventArgs e)

        {


            sqlCmd.CommandText = ("Insert * into [\\test.sqlite] UserTabelle (User,Passwort,LetzteAenderung,URL,EMail,Sonstiges,TypID) Values (User,Passwort,LetzteAenderung,URL,Email,Sonstiges,TypID,)");


        }


        private void Aktualiesieren_Click(object sender, EventArgs e)

        {

            sqlCmd.CommandText = String.Format("Update Gruppe SET Gruppe.ID,Gruppe.textbox2, Gruppe {0}  where (ID >= {0} )");

        }





    }

}






Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

der SqlReader ist eine Möglichkeit, Daten abzurufen, es gibt aber auch andere ;)

Eine, die recht komfortabel ist, geht über das DataSet DataSet-Klasse (System.Data) und den SqlDataAdapter SqlDataAdapter-Klasse (System.Data.SqlClient)

Damit wird dann auch das Arbeiten mit dem DataGridView DataGridView-Klasse (System.Windows.Forms) deutlich angenehmer.

Stöber mal etwas auf den Seiten und ihren verlinkten Inhalte und lass Dich inspirieren...

Für Deine Anwendung solltest Du außerdem den Connctionstring auslagern oder in der Anwendung konfigurierbar machen. Bei einer Änderung der Datenquelle muss dann die Anwendung nicht neu kompiliert werden. Zum Konfigurieren in der Anwendung gibt es z.B. den ConnectionStringBuilder Verbindungszeichenfolgen-Generatoren (ADO.NET)

Link zu diesem Kommentar
Auf anderen Seiten teilen

ja danke dir schonmal

jedoch meinte mein Arbeitgeber ich sollte das mal so versuchen wie oben beim Insert das würde heißen hier liegt der fehler


 private void Aktualiesieren_Click(object sender, EventArgs e)

        {

            sqlCmd.CommandText = String.Format("Update Gruppe SET Gruppe.ID,Gruppe.textbox2, Gruppe {0}  where (ID >= {0} )");

        }

Link zu diesem Kommentar
Auf anderen Seiten teilen

private void Aktualiesieren_Click(object sender, EventArgs e)

{

sqlCmd.CommandText = String.Format("Update Gruppe SET Gruppe.ID,Gruppe.textbox2, Gruppe {0} where (ID >= {0} )");

}

Also irgendwie passen da einige Sachen nicht an deinem SQL-Statement.

  • Die Platzhalter in dem String.Format werden nicht gesetzt
  • Das SET des SQL-Statements ist nicht korrekt. Hier musst du immer 'FeldName = Feldwert' schreiben und dann mit Kommata getrennt die anderen zu setzenden Felder angeben. (SQL-UPDATE)
  • Ich denke mal, dass du nicht textbox2 schreiben willst, sondern den Text, welcher sich in dieser Textbox befindet. Dazu musst du auf die Text-Property der Textbox zugreifen

Noch eine kleine Anmerkung zu SQL. Es ist besser den Parameter der WHERE-Bedingung nicht über string-verknüpfungen zu setzen, sonder über SQL-Parameter. Dazu einfach in den CommandText einen Parameter über @Parametername schreiben. Diesen Parameter kannst du dann im nachhinein setzten (siehe Beispiel)

Beispiel:


sqlCmd.CommandText = "UPDATE Gruppe SET Id=@Id";

SqlParameter idParam = new SqlParameter("@Id", DbType.Int32);

idParam.Value = "123";

sqlCmd.Paramters.Add(idParam);

Dadurch kannst du deine SQL-Statements gegen SQL-Injection absichern

SqlParameter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...