Text in QuellCode konvertieren

  • VB.NET
  • .NET (FX) 4.0

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Text in QuellCode konvertieren

    Hallo

    Ich habe folgendes Problem.

    In einer INI-Datei wurden von mir mySQL-Commands, die nach der Reihe abgearbeitet werden sollen gespeichert.
    Diese Commandos enthalten Variablen.

    Wenn ich nun die Befehle in einen String lade, erkennt Microsoft Visual Studio diese Variablen als Text und speichert eben folgendendes >> " & Form2.TextBox1.Text & " << in die mySQL Datenbank ab und nicht den Wert(z.B. HelloWorld), der aus der TextBox ausgelesen werden soll.

    Hier einmal die Gesamte mySQL-Anweisung die in der INI-Datei steht:

    Quellcode

    1. "UPDATE settings SET titelname = '" & Form2.TextBox1.Text & "';"


    Und hier einmal der VB-Code:

    VB.NET-Quellcode

    1. Public Sub create_fresh_DB()
    2. Dim CTRD As New INIDatei
    3. CTRD.Pfad = ("ress\commands.cm")
    4. dbcon.ConnectionString = "Data Source=mdcDATA.s3db;"
    5. ' dbcon.Open()
    6. ' dbcon.Close()
    7. Dim donow As String
    8. dbcon.Open()
    9. For comd = 2 To 4
    10. Dim Command = dbcon.CreateCommand
    11. donow = CTRD.WertLesen("com_create_fresh_DB_FILE", comd)
    12. Command.CommandText = donow
    13. Command.ExecuteNonQuery()
    14. Command.Dispose()
    15. Next
    16. dbcon.Close()
    17. End Sub


    Ich möchte also den Wert, der in der TextBox steht(z.B. HelloWorld) in die Datenbank gespeichert haben und nicht die Anweisung (" & Form2.TextBox1.Text & "), die in der INI-Datei seht.

    Hoffentlich könnt ihr mir dabei helfen, den String(donow) wieder in eine Anweisung zu konvertieren oder mir dabei helfen eine andere Lösung zu finden.

    Einen lieben Gruß
    Normalerweiße müsste es gehen, also der String is ordentlich zusammengesetzt.
    Zeig uns mal lieber den CodeSnippet, in dem du in die .ini schreibst.

    Ansonsten (nicht ganz so schön, aber vielleicht auch sinnvoll), wenn du den String durch eine Variable ersetzt und diese deklarierst.
    ...und lass dir den String mal anzeigen, wie sieht er aus?
    Welche ini-Klasse nutzt du?

    VB.NET-Quellcode

    1. Dim donow as String = CTRD.WertLesen("com_create_fresh_DB_FILE")

    Hey

    Also die INI-Datei habe ich von Hand erstellt. Die INI-Datei wird nur aufgerufen um SQL-Anweisungen abzurufen.
    Das Programm ruft diese Anweisungen richtig ab. Nur, dass halt die Anweisung und nicht der Wert der durch die Anweisung abgefragt werden soll gespeichert wird.

    TextBox 1= HelloWorld
    TextBox 2= 50

    INI-Datei Anweisung 1= "UPDATE settings SET titelname = '" & Form2.TextBox1.Text & "';"
    INI-Datei Anweisung 2= "UPDATE settings SET titelgr= '" & Form2.TextBox2.Text & "';"

    Erwarteter Wert in der DB Anweisung 1: HelloWorld
    Erwarteter Wert in der DB Anweisung 2: 50

    Tatsächlicher Wert in der DB Anweisung 1 = " & Form2.TextBox1.Text & " (und nicht HelloWorld)
    Tatsächlicher Wert in der DB Anweisung 2 = " & Form2.TextBox2.Text & " (und nicht 50)


    Muss doch einen Weg geben den String(donow = "UPDATE settings SET titelname = '" & Form2.TextBox1.Text & "';") vor der Abarbeitung nochmal in den QuellCode zu fassen sodass die Variabel für die TextBox berücksichtigt wird.
    ( Immer meine Sonderwünsche :D )

    MciBot schrieb:

    VB.NET-Quellcode

    1. " & Form2.TextBox1.Text & "

    VB.NET-Quellcode

    1. txt = txt.Replace(""Form2.TextBox1.Text"", Form2.TextBox1.Text)
    Man beachte die doppelten "" am Anfang und am Ende.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @ RodFromGermany

    Sehr nice. Danke erstmal
    Das war der Kick den ich brauchte. :thumbup:

    VB.NET-Quellcode

    1. donow = Replace(donow, """ & Form1.TextBox1.Text & """, Form1.TextBox1.Text)


    Nun habe ich natürlich andere Probleme, da die Anweisung ja nicht immer TextBox1 betrifft :/ . Aber einen Schritt nach dem Anderen.

    MciBot schrieb:

    TextBox1
    Sind das nur 3 verschiedene oder eher beliebig viele Controls?
    Auf wieviel Formen sind die verteilt?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich schätze, dass es so um die 200 verschiedene Anweisungen geben wird, die alle andere Textboxen beinhalten werden. UPDATE von TextBox'n'; INSERT von TextBox'n' ... DROP ... WHERE ... . Es werden auch Checkboxen etc vorkomen.
    Wie ich das genau mache weiß ich noch nicht. Aber warscheinlich werde ich vor jeder SQL-Query eine Stringüberprüfung machen müssen ob (""" & ") im String enthalten ist.
    Sollte dies der Fall sein eben den String filtern und den oben genannten Vorgang automatisch angleichen.

    Oder stehen hier bessere Ideen im Raum?