Archief - [PROG]C# Probleem uitvoeren SQL commando met RegEx output

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Gothrek

Legacy Member
Hey,

Code:
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Data.SqlClient;

namespace RegExTest
{
    class Program
    {

        static void Main(string[] args)
        {
            TextWriter tw = new StreamWriter("Behuizing2.txt");

            SqlConnection myConnection = new SqlConnection("Data Source=DESKTOP\\SQLEXPRESS;User ID=XXXXXXXX;password=XXXXXXXX;Database=Tones;Integrated Security=True");
            myConnection.Open();
            Regex r = new Regex("<td width=\"469\".+?><a.+?>(.+)</a></td>",
                RegexOptions.Compiled);
            Regex e = new Regex("<td width=\"50\" height=\"24\" valign=\"middle\" class=\"blauw\" scope=\"col\"><div align=\"right\">(.+)</div></td>",
                RegexOptions.Compiled);
            String file = File.ReadAllText("Behuizing.txt");
            MatchCollection m = r.Matches(file);
            MatchCollection p = e.Matches(file);

            System.Collections.Hashtable items = new System.Collections.Hashtable();
            System.Collections.Hashtable item;
            int i = 0;

            foreach (Match match in m)
            {

                item = new System.Collections.Hashtable();
                item.Add("naam", match.Groups[1].Value);
                items.Add(i, item);
                i++;
            }
            i = 0;
            foreach (Match match in p)
            {
                ((System.Collections.Hashtable)items[i]).Add("prijs", match.Groups[1].Value);
                i++;
            }
            System.Collections.Hashtable item3;

            foreach (System.Collections.DictionaryEntry item2 in items)
            {

                item3 = (System.Collections.Hashtable)item2.Value;
                Console.WriteLine(((string)item3["naam"]) + " " + ((string)item3["prijs"]));
                tw.WriteLine(((string)item3["naam"]) + " " + ((string)item3["prijs"]));

                SqlCommand myCommand = new SqlCommand("INSERT INTO Componenten (ID,Categorie,Naam,Prijs) VALUES (0,130,"+((string)item3["naam"])+","+((string)item3["prijs"])+")", myConnection);
                myCommand.ExecuteNonQuery();


            }
            tw.Close();
            //Console.ReadKey();
            myConnection.Close();
        }
    }
}

Om mijn Regex te controleren had ik dus 3 testjes zeg maar, een console, een textwriter,maar het definitieve dus verwerkt worden in een SQL commando.
Zodat de Naam en de Prijs die hij uitleest uit de paginabron (Behuizing.txt) ingevoerd worden in mijn tabel.
Ik heb al met vanalles liggen knoeien maar ik snap niet wat er misloopt :doh: :doh:
Wat er in de console verschijnt is dit
http://img252.imageshack.us/my.php?image=regexconsolepi9.png

Alvast bedankt :bow:

Gothrek

Legacy Member
Het probleem ligt denk ik vooral bij deze 2 regels code

Code:
SqlCommand myCommand = new SqlCommand("INSERT INTO Componenten (ID,Categorie,Naam,Prijs) VALUES (0,130,"+((string)item3["naam"])+","+((string)item3["prijs"])+")", myConnection);
                myCommand.ExecuteNonQuery();

Ik snap wat er daar fout aan is,mss zien jullie het wel

killgore

Legacy Member
' rond uw strings zetten! in sql statements

edit, dus:
SqlCommand myCommand = new SqlCommand("INSERT INTO Componenten (ID,Categorie,Naam,Prijs) VALUES (0,130,'"+((string)item3["naam"])+"','"+((string)item3["prijs"])+"')", myConnection);
myCommand.ExecuteNonQuery();
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan