2009-02-15 6 views
1

Je souhaite ajouter une zone de texte sur une page Web afin que les utilisateurs puissent ajouter des balises délimitées par des espaces. Lorsque l'utilisateur soumet la page, comment puis-je retirer les balises de la zone de texte et les ajouter comme enregistrement dans une base de données SQL?Division d'une chaîne de texte de la zone de texte à l'aide de VB.NET

Je souhaite utiliser VB.NET.

+0

Vous devez fournir un exemple illustratif de donner une meilleure idée de ce que vous voulez. (Editer votre message) – Cerebrus

Répondre

2

On dirait que vous voulez quelque chose comme:

Using connection as New SqlConnection("connection string") 
    connection.Open() 

    For Each tag As String In TextBox.Split(CChar(" ")) 
     Using command as New SqlCommand("INSERT INTO UsedTags(Tag) VALUES(@Tag)", connection) 
      command.Parameters.Add("@Tag", SqlDbType.varchar).value = tag 

      Try 
       command.ExecuteNonQuery() 
      Catch ex As SqlException 
       Debug.WriteLine(ex.ToString()) 
      End Try 
     End Using 
    End For 
End Using 

Non testé, mais devrait être assez proche de vos besoins.

1

Mon chemin serait d'envoyer la valeur de la zone de texte à une procédure stockée SQL, avoir ce SPLIT le texte, puis insérer les lignes individuelles.

Tout cela sera basé sur des ensembles, donc très rapide.

si vous le divisez dans VB.NET et envoyez des instructions INSERT individuelles à SQL qui sera beaucoup plus lent.

Vous pouvez convertir les données délimitées par des zones de texte en XML et les envoyer à SQL, puis les utiliser comme base pour vos instructions INSERT. Mais personnellement, je pense que le découpage en SQL est préférable.

Je vais trouver un lien pour vous

je ne trouve pas un exemple travaillé facilement, alors voici une suggestion

INSERT INTO UsedTags 
(
    Tag 
) 
SELECT SplitValue 
FROM dbo.MySplitFunction(@ListOfTags) 

Voir http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=50648 pour les fonctions SPLIT recommandées

Si vous voulez juste faire un INSERT directement à partir de VB.NET vous pourriez faire quelque chose comme:

INSERT INTO UsedTags 
(
    Tag 
) 
SELECT "Tag1" 
UNION ALL 
SELECT "Tag2" 

En d'autres termes, vous générez l'instruction SELECT composée dans VB.NET après avoir séparé la chaîne de balise délimitée.

(S'il pourrait y avoir des balises en double, et que vous voulez supprimer les doublons, utilisez « UNION » au lieu de « ALL UNION »)

+0

Étant donné que 1) MSSQL (je suppose que c'est ce dont nous parlons ici) n'a pas de fonction de division de chaînes intégrée, 2) il n'y a pas d'entrée pour parler, 3) il y a probablement un très petit quantité d'étiquettes, je doute de vos hypothèses de performance. –

+0

Je ne connais pas VB.NET, mais si "command.Parameters.Add" va faire des allers-retours au serveur pour chaque ligne, alors je suis heureux de vous parier une bière sur celui-là! Je suis d'accord pour un petit nombre de TAGs le fractionnement est pourtant trivial mais fait (mais pour les grands nombres, il faut ** certainement ** prendre soin de choisir la méthode SQL) – Kristen

Questions connexes