Hallo zusammen,
ich setze eine Access 2010 Datenbank ein.
Versuche mit Visual Studio 2012 express und C#
Per String Eingabe Werte in die Datenbank einzugeben.
Wenn ich die Werte Statisch eingebe, kein Problem. Ich habe 2 Bücher nach denen ich lerne und die Aufgaben praktisch durcharbeite
Wenn ich jedoch über einen TextString einlese, kommt nichts an
Die Datenbankanbindung funktioniert.
Anbei der Statische Text
cmd.CommandText = "insert into Person" + "(Name , Vorname , Personalnummer, Gehalt, Geburtstag)" +
" values('Tomitza' , 'Andrea', 18, 2900 , '10.10.1970')";
Der Aktive Text über String
cmd.CommandText = "insert into Person" + "(Name ,Vorname , Personalnummer, Gehalt, Geburtstag)" +
" values('"+ E_V_Name +"' , '"+ E_V_Vorname +"', '"+ E_V_Personalnummer +"','"+ E_V_Gehalt+"', '"+ E_V_Geburtstag +"')";
Anmerkung:
Ich habe alle Sonderzeichen bereits zum testen entfernt
->'
-> "
-> ,
hat aber nichts gebracht, das System zeigt mir keine Fehler
PS : Gibt's unter Access ein Toll ähnlich dem SQL Profiler.....
Danke für eure Hilfe
Kannst du bitte die Code-Tags zum formatieren von Code benutzen und einen eindeutigen Titel wählen? Habs jetzt mal korrigiert. Niemand kann mit "Insert into...." auch nur ansatzweise erahnen, um was es hier geht, was dein Problem ist und was genau du erreichen willst. Steht alles in [Hinweis] Wie poste ich richtig? was du gelesen und akzeptiert hast 😉
[Artikelserie] SQL: Parameter von Befehlen sollte dein Problem lösen
hi
ist " E_V_Vorname " eine textbox? wenn ja fehlt das " .Text " dahinter. im SQL tag müsste dein SQL so aus E_V_Vorname.Text
Zusätzlich noch als Hilfe:
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
@taprevis
Habe ich als Anfänger logischerweise getestet
Ich habe einmal den Textstring der TextBox eingelesen, und einmal
eine eigene Variable als String neu erstellt.
Keine Änderung.
Der nächste Schritt wird ein intensives Debugging der Übergabe sein
Du wirst ein Problem mit den Parametern haben.
Deswegen wurde Dir [Artikelserie] SQL: Parameter von Befehlen gegeben.
Das sollte man der erste Schritt vor dem Debugging sein.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Der erste Schritt sollte sein, das mit dem Access-File sein zu lassen, wenn es nicht absolut notwendig ist .
Access ist keine DB.
@Abt: Was ist los, das kommt doch sonst als erstes von Dir?
@Fzelle
Ich arbeite 2 Bücher praktisch durch. Im ersten wird Access 2010 als DB benutzt
Des weiteren kann ich dir nicht sagen, welche DB zur Zeit am besten ist.
Alle Aufgaben und Infos zum Umgang mit der DB waren bisher sehr interessant und haben spaß gemacht
Ich werde jetzt mit den Parametern anfangen
Merci trotzdem
@Abt: Was ist los, das kommt doch sonst als erstes von Dir?
Du hast mich ertappt.
Access solltest Du sein lassen; Access ist auch keine echte Datenbank und auch nicht für solche Dinge gedacht. Dass das Buch nun Access verwendet spricht entweder nicht für das Buch oder es ist schon älter.
Nimm was anderes wie Sqlite oder LocalDB - aber nicht Access.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ich werde jetzt mit den Parametern anfangen
Da tust Du auf jeden Fall mal gut daran, das brauchst Du nämlich für Datenbankanwendungen immer und dringend, ob nun mit Access oder mit einem anständigen Datenbanksystem.
Mein Lieblingszitat hierzu:
Warning
Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.
Ersetze "Python string concatenation (+) or string parameters interpolation (%)" durch "String-Manipulationsmethoden Deiner bevorzugten Programmiersprache".
Servus.......
Schwere Kost............
anbei mal meine geänderte "Anpassung"
Angepasster Provider SQLNCI
con.ConnectionString = "Provider=SQLNCLI;Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Windows\\Temp\\firma.mdb";
cmd.CommandText = "insert into Person" +
"(Name ,Vorname , Personalnummer, Gehalt, Geburtstag)" +
" values('"+ V_Name.Text +"' , '"+ V_Vorname.Text +"', '"+ V_Personalnummer.Text +"','"+ V_Gehalt +"', '"+ V_Geburtsdatum.Text +"')";
cmd.Parameters.AddWithValue("Name", V_Name.Text);
cmd.Parameters.AddWithValue("Vorname" , V_Vorname.Text);
cmd.Parameters.AddWithValue("Personalnummer", V_Personalnummer.Text);
cmd.Parameters.AddWithValue("Gehalt" , V_Gehalt.Text);
cmd.Parameters.AddWithValue("Geburtsdatum", V_Geburtsdatum.Text);
In den gelesenen Artikeln fehlt mir ( oder ich finde es nicht richtig)
noch einiges..................
Daher Danke für eure Mühe
PS: Die Daten werden nicht in die DB geschrieben.........
Erneut der Hinweis auf die Code-Tags!!! [Hinweis] Wie poste ich richtig?
Hi Fitzel69,
du solltest dir nochmal [Artikelserie] SQL: Parameter von Befehlen anschauen. Dir fehlen die Platzhalter für die Parameter in der SQL-Anweisung.
Außerdem solltest du eine Fehlermeldung bekommen, die dir bei der Fehlersuche weiterhelfen müßte. Siehe auch dazu nocheinmal: [Artikel] Debugger: Wie verwende ich den von Visual Studio?
Weeks of programming can save you hours of planning