2010-08-18 5 views
2

J'essaie de remplir une datatable en utilisant un SqlDataAdapter en C#. Je ne suis pas très familier avec les objets, et je travaille essentiellement sur un modèle de code de quelqu'un d'autre pour essayer de comprendre comment cela fonctionne. Voici le formulaire de base.C# SqlDataAdapter.Fill donnant une erreur à propos de la conversion de données lors de la transmission du paramètre datable

 SqlCommand command = new SqlCommand(@"SELECT * FROM tblEmployees WHERE Name = " + firstSSN,connection); 

     SqlDataAdapter adapter = new SqlDataAdapter(command.CommandText.ToString(), connection.ConnectionString.ToString()); 

     SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter); 
     DataTable table = new DataTable(); 
     table.Locale = System.Globalization.CultureInfo.InvariantCulture; 
     adapter.Fill(table); 

Et cela fonctionne très bien sur leur forme. J'ai essayé de faire la même chose avec le mien, mais j'ai eu une erreur en essayant de convertir un nvarchar en une colonne de type de données int. J'ai regardé MSDN et j'ai essayé ce qui suit: 1) Ajout des colonnes au DataTable avec les noms/types/clés primaires appropriés de tblEmployees. 2) Ajout du TableMapping au DataAdapter, bien que je ne sois pas sûr à 100% que j'ai la syntaxe sur cette partie droite. Je fais:

adapter.TableMappings.Add("work", "dbo.tblEmployees"); 

pour cela. Le DataTable est nommé "work", mais je ne suis pas sûr d'avoir la bonne syntaxe, je mets le nom de la table tel qu'il apparaît dans SQL Server Management Studio mais je ne sais pas comment je le testerai s'il est correctement lié.

Merci pour toute aide que vous pouvez fournir. Je me suis cogné la tête au point que je suis sur le point d'approcher mon but d'une manière totalement différente et de jeter ce que j'ai.

+0

utiliser les guillemets dans SELECT * FROM tblEmployees OU Name = "+ firstSSN -> Name = "ZzzName" – garik

+0

String.Format (" SELECT * FROM tblEmployees OU Name = '{0}' », firstSSN) – garik

+0

Doh! Je ne peux pas croire que j'ai oublié ça, merci beaucoup. – Nick

Répondre

2

À première vue, quand on regarde la première ligne de votre code, regardez où firstSSN est:

@"Select * From tblEmployees WHERE Name = " + firstSSN 

J'imagine que « nom » est le champ nvarchar que le message d'erreur fait référence, et si firstSSN est une valeur entière seulement, essayez de mettre des marques « » autour firstSSN comme ceci:

@"Select * From tblEmployees WHERE Name = '" + firstSSN + "'" 

Sinon, assurez-vous que le type du champ « Nom » correspond au type du paramètre que vous passez dans votre commande. Il s'agit très probablement d'un problème de type de données. Une recommandation que j'ai pour vous - J'ai juste commencé à expérimenter avec LINQ l'autre jour, et je trouve ça très pratique à utiliser pour extraire, manipuler et filtrer des données dans un ensemble d'enregistrements facile à utiliser. Il existe toutes sortes de documentation sur la façon d'exécuter des requêtes avec LINQ, alors jetez un oeil si vous avez quelques minutes. J'espère que cela t'aides.

Questions connexes