Tjena, jag har tillbringat dagen med att läsa den här artikeln om DAL och BLL: om du skriver return @@identity i en lagrad procedur på sql-server så kommer du få tillbaks det recordid som precis skapades. Att sedan ta emot detta är precis som du gör när du skriver sql-satser och får dataset eller datareader tillbaks. Använder du command-objekt går det också förstås. Aha, okej. Ska testa det. Men nu när jag anropar funktionen i bll gör jag så här. Hej, Aha okej, jag har försökt testa med det nu. Kolla så att metoden anropas med ExecuteScalar(), detta kan du ställa in för metoden enkelt om du använder designern för att skapa ditt typade dataset.Returnera id:et på senaste posten
http://asp.net/learn/dataaccess/tutorial02cs.aspx?tabid=63
Jag försöker nu göra så att jag får idet på den senaste posten. Jag vet hur man ska göra med sql-klassen, men det jag inte vet är hur man ska göra i BLL.
[System.ComponentModel.DataObjectMethodAttribute
(System.ComponentModel.DataObjectMethodType.Insert, true)]
public bool AddProduct(string productName, int? supplierID, int? categoryID,
string quantityPerUnit, decimal? unitPrice, short? unitsInStock,
short? unitsOnOrder, short? reorderLevel, bool discontinued)
{
// Create a new ProductRow instance
Northwind.ProductsDataTable products = new Northwind.ProductsDataTable();
Northwind.ProductsRow product = products.NewProductsRow();
//Tog bort där man anger värdet för produkten för att minska ner koden.
// Add the new product
products.AddProductsRow(product);
int rowsAffected = Adapter.Update(products);
// Return true if precisely one row was inserted,
// otherwise false
return rowsAffected == 1;
}
Hur ska man göra för att få tag på id:et? Jag antar att man måste försöka göra det i BLL och sedan returnera det till filen där jag anropar bll. Jag har försökt lite, men jag kom inte riktigt på hur man skulle göra och vilken typ man skulle ha på AddProduct, för jag antar att man inte kan ha bool om man ska returnera med id:et. Aja, vet nån hur man kan lösa det på något sätt?
Sv: Returnera id:et på senaste posten
Sv:Returnera id:et på senaste posten
ProdukterBLL produkter = new ProdukterBLL();
produkter.AddProdukt(namn, pris, bild);
Men kan jag få tag på recordid när AddProdukt i BLL bara returnerar true eller false?
Sv: Returnera id:et på senaste posten
Den enklaste lösningen är nog att göra så att funktionen returnerar ett tal istället för boolean.
Dvs, Int32 AddProduct(...) { }
/mSv:Returnera id:et på senaste posten
Men nu håller jag på att bli galen:) Jag vet inte riktigt hur jag ska få tag på mittID som jag returnerar från min SP.
Jag har försökt göra ett DataSet som jag ska fylla med datan som jag får. Men då får jag felmeddelandet att det inte går att konvertera ett DataSet till Northwind.ProductsDataTable. Så jag gjorde en Northwind.ProductsDataTable och fyllde den och då får jag meddelandet att den inte innehåller kolumnen mittID när jag försöker köra applikationen. Sv: Returnera id:et på senaste posten