Avatar billede pumpin Nybegynder
17. maj 2006 - 11:20 Der er 3 kommentarer og
1 løsning

Problemmer med dataset.xsd

hej eksperter

Jeg har de sidste par dage rodet med at lave et "simpelt" DAL ved at bruge VS2005's indbygget dataset designer.
Jeg har connectede til Northwind databasen og trukket suppliers tabel ind i mit design view og til den vil jeg så gerne lave en insert metode ( som retunere det id på den række jeg lige har sat ind, så derfor bruger jeg en scaler i stedet for en nonquery)

får at lave min insert laver jeg en ny metode til min tabel med den her SQL sætning:

INSERT INTO Suppliers (CompanyName, ContactName, ContactTitle, Address, City, Country, PostalCode, Phone) VALUES (@CompanyName, @ContactName, @ContactTitle, @Address, @City, @Country, @PostalCode, @Phone)
SELECT @@IDENTITY

og i min C# kode bruger jeg denne stump kode:


        NorthwindTableAdapters.SuppliersTableAdapter suppliersAdapter = new NorthwindTableAdapters.SuppliersTableAdapter();

        System.Object id;
        id = suppliersAdapter.InsertSupplier("test", "test", "test", "test", "test", "test", "test", "test");

        Response.Write(id.ToString());

men når jeg prøver at previewe den så kommer den med en compile fejl:
No overload for method 'InsertSupplier' takes '8' arguments

hvis jeg så fjerne alle mine parameter fra insertSuppliers(); så vil den godt compile men når jeg trykke på knappen som skal køre overstående kode stump. så kommer den med en ny fejl:

Must declare the scalar variable "@CompanyName".

Hvad gør jeg galt ??

Venlig Hilsen
Troels
Avatar billede pumpin Nybegynder
17. maj 2006 - 12:08 #1
hvis jeg bruger den her SQL string istedet virker insert'en

INSERT INTO Suppliers ([CompanyName], [ContactName], [ContactTitle], [Address], [City], [Country], [PostalCode], [Phone]) VALUES (@CompanyName, @ContactName, @ContactTitle, @Address, @City, @Country, @PostalCode, @Phone)

men hvis jeg vil prøve at selecte @@IDENTITY så brokker den sig igen over at der ikke er en overload som tager 8 parameter til denne metode ??
Avatar billede arne_v Ekspert
18. maj 2006 - 00:50 #2
du skal have 2 commands

1) en med din INSERT som udføres med en ExecuteNonQuery
2) en SELECT @@IDENTITY som udføres med en ExecuteScalar

så længe det er samme connection så kan databasen godt finde ud af at returnere
den rigtige @@IDENTITY
Avatar billede pumpin Nybegynder
18. maj 2006 - 13:50 #3
dahm hvis jeg bare havede huskede at læse min SQL bog... jeg mangler et ; efter min SELECT instruktion
Avatar billede pumpin Nybegynder
28. maj 2006 - 13:44 #4
min fejl
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester