Autor Beitrag
DanteMay
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 08.12.16 12:41 
Alola,
ich sitze derzeit an einem Projekt welche Mit Kundendaten zu tun hat. Als Backend gibt es ne access Datenbank mit mehreren Tabellen. Andere Foreneinträge konnte ich nicht auf mein Problem projizieren (oder war einfach nur zu dumm dafür).

microsoft sagt mir ich solle SQL Befehlsdinger verwendet aber die Datenbank ist ja keine SQL DB. Egal...

Hier mein kläglicher Versuch:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
try
            {
                //string connect = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = Datenbank1.accdb";
                string auswahl = "SELECT * KNachname FROM Kunde";
                System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(auswahl);
                System.Data.SqlClient.SqlCommand test = new System.Data.SqlClient.SqlCommand();
                test.CommandType = System.Data.CommandType.Text;
                test.CommandText = "insert into Kunde('KNachname') values (Dragonil)";
                test.Connection = con;
                con.Open();
                test.ExecuteNonQuery();
                con.Close();
                MessageBox.Show("Daten wurden erfolgreich gespeichert!""Erfolg");
            }
            catch
            {
                MessageBox.Show("Fehler beim speichern der Daten!""Achtung!");
            }


Vielleicht sollte ich auch erwähnen das ich mich mit C# erst seit kurzem befasse^^
er springt nach
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(auswahl); direkt zum catch.

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4259
Erhaltene Danke: 851


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 08.12.16 12:53 
Du solltest der Connection den Connectionstring geben nicht das sql statement. Also vermutlich das was da als connect auskommentiert ist.
Die auswahl Variable ist vermutlich überflüssig da du die dann nicht mehr benutzt. Wenn du die doch brauchst ist der Syntax falsch. Entweder select * from oder select KNachname from oder zumindest ein , zwischen * und KNachname.

Edit: Nebenbei du solltest im catch Block die Exception auch auswerten, so versteckst du nur den tatsächlichen Fehler und sagst "geht nicht". Das hilft keinem nicht mal dem User. Dem Entwickler des Codes erst recht nicht.
DanteMay Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 08.12.16 13:02 
könntest du das bitte im code wiedergeben?^^
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4259
Erhaltene Danke: 851


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 08.12.16 13:12 
Könnte ich, finde es aber besser wenn du es selbst probierst. Die Dinge die ich beschrieben habe sollten ja das Problem einigermassen wieder geben. Wenn das nicht verständlich war frag nochmal nach.
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 210
Erhaltene Danke: 9

Win 7, Win 10
C# (VS 2015 Community, VS 2017 Community), Java, MS SQL, Firebird SQL
BeitragVerfasst: Do 08.12.16 13:17 
Als kleine Hilfe:
Das hier gibt dir den Text einer (allgemeinen) Exception aus.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
try 
{
  ...
}
catch (Exception ex) 
{
    MessageBox.Show("Fehler: " + ex.Message);
}

Für diesen Beitrag haben gedankt: DanteMay
DanteMay Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 08.12.16 15:04 
sitze seit 2 tagen an dem mist und hab mich komplett festgefahren^^ also bitte kein "probier es selber aus"^^ ich raff in dem punkt gerade nichts mehr^^ ich will erstma nur ein code snippet welcher in dieser umgebung funktioniert^^
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 210
Erhaltene Danke: 9

Win 7, Win 10
C# (VS 2015 Community, VS 2017 Community), Java, MS SQL, Firebird SQL
BeitragVerfasst: Do 08.12.16 15:24 
Ok, für mich sieht es so aus, als hättest du im Insert-Script etwas vertauscht
ausblenden C#-Quelltext
1:
test.CommandText = "insert into Kunde(KNachname) values ('Dragonil');";					


Kann es gerade nicht testen, aber die values müssen glaube ich immer in Anführungsstriche.
Was steht denn in der Exception?
DanteMay Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 08.12.16 15:29 
siehe anhang
Einloggen, um Attachments anzusehen!
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 210
Erhaltene Danke: 9

Win 7, Win 10
C# (VS 2015 Community, VS 2017 Community), Java, MS SQL, Firebird SQL
BeitragVerfasst: Do 08.12.16 15:38 
Ich vermute, es liegt an deiner (nicht zustande kommenden) Datenbank-Verbindung.

Mehr da zu hier
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4259
Erhaltene Danke: 851


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 08.12.16 15:46 
Versuchen wir mal zu helfen. Du bist zuweit weg von funktionierendem Code das ich nicht einfach hier was funktionierendes hinwerfen will. Am besten du fängst frisch an und legst das was du hast zur Seite.
Die SqlXXX Klassen sind für den SqlServer du willst aber eine Verbindung zu Access. Um eine Verbindung zu Access hinzubekommen brauchst du Klassen aus der OleDBXXX Familie.

Deine erster Schritt wäre also

a.) Erzeuge eine Instanz der Klasse OleDbConnection übergib ihr den passenden Connectionstring zu deinem access File (vermutlich das was du auskommentiert hast und in der Variable connect steckt)
b.) rufe an dieser Instanz open auf.

Wenn du das geschafft hast und der Aufruf von open keine Exception wirft zeig den Code dazu und wir gehen die nächsten Schritte an.

Für diesen Beitrag haben gedankt: erfahrener Neuling