C # SqlDataAdapter.Fill donnant erreur sur la conversion de données lorsque le paramètre passé datatable

StackOverflow https://stackoverflow.com/questions/3513740

Question

Je suis en train de remplir un DataTable en utilisant un SqlDataAdapter en C #. Je ne suis pas très familier avec les objets, et je travaille essentiellement hors d'un modèle de code de quelqu'un d'autre pour essayer de comprendre comment cela fonctionne. Voici la forme de base.

        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 que fonctionne très bien sur leur forme. J'ai essayé de faire la même chose avec moi, mais ai eu une erreur d'essayer de convertir un nvarchar à une colonne de type de données int. J'ai regardé par MSDN et essayé les points suivants: 1) Ajout des colonnes au DataTable avec les noms appropriés / types / clés primaires de tblEmployees. 2) Ajout du TableMapping au DataAdapter, bien que je ne suis pas 100% sûr d'avoir la syntaxe de cette partie droite. Je fais:

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

pour cela. Le DataTable est nommé « travail », mais je ne suis pas sûr si j'ai le droit de syntaxe, je mets au nom de la table tel qu'il apparaît dans SQL Server Management Studio, mais ne sais pas comment je tester si elle est relier correctement.

Merci pour toute aide que vous pouvez fournir. J'ai bats ma tête sur ce au point que je suis sur le point d'approcher mon objectif d'une manière tout à fait différente et jeter ce que j'ai.

Était-ce utile?

La solution

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

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

Je suppose 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 « » marques autour firstSSN comme ceci:

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

Dans le cas contraire, assurez-vous que le type du champ « Nom » correspond au type du paramètre que vous passez dans votre commande. Ceci est probablement juste une question de type de données.

Une recommandation que je vous porte - je viens de commencer à expérimenter avec LINQ l'autre jour, et trouve très pratique à utiliser pour extraire, manipuler, et le filtrage des données dans un format facile à utiliser ensemble enregistrement. Il y a toutes sortes de documents disponibles sur la façon d'exécuter des requêtes avec LINQ, donc un coup d'oeil si vous avez quelques minutes. Espérons que cela aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top