2011-06-17 4 views
1

J'ai une liste en C# pour mon application Winforms:insérer un tableau dans SQL Server et la base de données MySQL en utilisant C# .net

List<string> StudentSubjects = new List<>(string); 

J'ai inséré ces derniers dans la liste:

StudentSubjects.Add("Physics", "Chemistry", "Mathematics", "English"); 

Maintenant, je une table: ÉLÈVES

---------- 
**StudentID  | SubjectsSelected** 
--------- 
STDNT001  | [HERE all subjects selected by the student should be inserted]  
STDNT002  | Physics, Chemistry, Mathematics, English 
STDNT002  | Physics, Chemistry, Mathematics, English 
---------- 

Puis-je utiliser la fonction imploser pour MyS ql? Mais quelle est la syntaxe? En outre, que faire pour SQL Server.

que je fais:

string query = 
"INSERT INTO STUDENTS VALUES 
('S001', implode('" + StudentSubjects.ToArray() + " ')) " 

Mais il y a une erreur. S'il vous plaît aider.

Répondre

2

Cela devrait corriger votre requête

string query = @" 
    INSERT INTO STUDENTS VALUES 
    ('S001', '" + string.Join(",", StudentSubjects) + "')"; 

Cependant, il vaut mieux utiliser la requête paramétrée, au lieu de concaténation de chaînes.

Pour MySQL:

using (var connection = new MySqlConnection(connectionString)) 
using (var command = connection.CreateCommand()) 
{ 
    command.CommandText = @" 
     INSERT INTO STUDENTS VALUES 
     ('S001', ?subjects)"; 
    var param = command.Parameters.Add("?subjects", MySqlDbType.VarChar); 
    param.Value = string.Join(",", StudentSubjects); 
    connection.Open(); 
    command.ExecuteNonQuery(); 
} 

Pour SQL Server:

using (var connection = new SqlConnection(connectionString)) 
using (var command = connection.CreateCommand()) 
{ 
    command.CommandText = @" 
     INSERT INTO STUDENTS VALUES 
     ('S001', @subjects)"; 
    command.Parameters.AddWithValue("subjects", string.Join(",", StudentSubjects)) 
    connection.Open(); 
    command.ExecuteNonQuery(); 
} 
+0

Aza @ Alex: Monsieur, pouvez-vous s'il vous plaît me aider avec le code de requête paramétrées aussi. – sqlchild

+0

@Alex Aza: monsieur, est-ce valable pour Mysql et SQL Server? – sqlchild

+0

@sqlchild - mis à jour. –

Questions connexes