2017-09-22 1 views
0

J'implémente un logiciel pour enregistrer des livres. Donc, je veux ajouter de nombreux auteurs et leurs rôles à un livre. Donc je tape le nom de l'auteur et son rôle séparé par un hash (-) et j'ajoute de nombreux auteurs à un livre en utilisant (,) dans la zone de texte.
Regardez cette image pour plus d'informations.
Image: - Adding a new book to the database
My Book TableC# obtient des valeurs séparées par des virgules (,) et un tiret (-) dans la Textbox multiligne et les insère dans plusieurs lignes et colonnes dans la base de données

RecordID| BookID | Book Name  | ISBN  | 
--------------------------------------------------- 
001  |125  |Journey of my life|| 

Mon Auteur Tableau

RecordID| AuthorID| Author Name 
--------------------------------- 
001  |005  |B.A. Lakshan Enosh 
002  |006  |John williams 
003  |007  |graham winter 
004  |008  |Dilshan nim 

BOOK_AUTHOR Tableau

RecordID| BookID | AuthorID| ROLE| 
--------------------------------- 
001  |125  |005  |Author| 
002  |125  |006  |Author| 
003  |125  |007  |Editor| 
004  |125  |008  |Editor| 

i besoin d'insérer des valeurs à mes nombreux à plusieurs table de relation dans la base de données comme ci-dessus.

Ma question - Comment puis-je séparer les données dans la zone de texte et les insérer dans le tableau my many to many.

(S'il vous plaît Reportez-vous l'image que je joins avant de me donner des mauvais commentaires) Merci

+0

Qu'avez-vous essayé jusqu'à présent? Avez-vous déjà entendu parler de google? il y a ** des milliards ** de hits si vous ne faites que diviser _C# chaîne divisée par une virgule ... – Pio

+0

J'ai essayé beaucoup. Mais je ne pouvais pas faire les deux choses (Séparer le nom et le rôle par (-) et séparer les noms par (,)). Ce n'est pas une question de séparation.Cela doit prendre plusieurs noms avec son rôle à partir d'une seule zone de texte multi-lignée. –

+0

Pourquoi n'utilisez-vous pas plusieurs zones de texte? – Peter

Répondre

0

Selon votre image, le format est:

nom1 - rôle1, nom2 - rôle2, NAME3 - role3

S'il vous plaît essayer ci-dessous pour diviser dans chaque paire de nom et de rôle.

string strAuthorRole = txtAuthorRole.Text; 
string[] lstAuthorRole = strAuthorRole.Split(','); 
string[] lstAuthor = new string[lstAuthorRole.Length]; 
string[] lstRole = new string[lstAuthorRole.Length]; 
string strMsg = ""; 

for (int i = 0; i < lstAuthorRole.Length; i++) 
{ 
    string[] pair = lstAuthorRole[i].Split('-'); 
    lstAuthor[i] = pair[0].Trim(); 
    lstRole[i] = pair[1].Trim(); 
    // sample output 
    strMsg += lstAuthor[i] + " (" + lstRole[i] + ")\n"; 
} 

MessageBox.Show(strMsg); 

En utilisant lstAuthor et lstRole, vous pouvez alors insérer chaque paire (ayant même indice dans les tableaux) dans votre table. J'espère que cela t'aides.

+0

Merci Linn. C'est ce que je voulais. Laissez-moi essayer ceci dans mon code. Merci encore. –

1

si j'ai bien compris alors votre format texte est comme

nom de l'auteur - rôle1, rôle2 , role3

Cela peut être séparé en deux étapes

s tep 1. Séparer l'auteur et les rôles.

Étape 2. rôles distincts dans plusieurs rôles distincts

Voici le code. Essayez-

 string[] authorRoles = yourString.Split('-'); 
     string[] roles = authorRoles[1].Split(','); 
+0

Merci pour votre réponse .. prasad Ce n'est pas fait, je voulais Je veux quelque chose comme ça authorName1 - Rôle1, auteur Nom2 - Role2, authorName3 - Rôle 3 –

+0

@EnoshShan Je suppose que vous upvoted ma réponse. Selon vos commentaires sur les réponses et votre question, il semble que ** linn Htet ** vous a suggéré une réponse exacte ou plus précise. –