更新时间:2023-11-15 18:37:28
使用范围的身份在你插入查询结束,它会返回插入ID喜欢...
INSERT INTO表(的ColumnName)VALUES();
走
SELECT SCOPE_IDENTITY();
编辑:您的帮助,这里有一些文章,可以帮助您实施
http://msdn.microsoft.com/en-us/library/z72eefad.aspx
http://www.mikesdotnetting.com/Article/54/Getting-the-identity-of-the-most-recently-added-record
http://www.objectreference.net/post/SCOPE_IDENTITY()-return-the-id-from-the-database-on-insert.aspx
I am processing items users have selected from a gridview, and performing an email and database insert operation.
When the user selects a button, the code below takes information from the gridview, creates a new order in the Order table, and creates new entries in the Transactions table.
How can I get the last inserted ID if I use this method of inserting a record? Would you recommend a different approach to this simple problem?
protected void btnOrder_Click(object sender, EventArgs e)
{
double Total = 0;
string MailFrom = "webadmin@domain.com";
string MailTo = "purchasing@domain.com";
string MailSubject = "Online Order";
string MailCC = "";
string MailBCC = "";
string MailReplyTo = "";
string MailBody = "";
TextBox ItmCostCode = (TextBox)form1.FindControl("txtCostCode");
foreach (GridViewRow gvr in GridView1.Rows)
{
CheckBox cb = (CheckBox)gvr.FindControl("ItemSelect");
Label ItmTotal = (Label)gvr.FindControl("ItmTotal");
Label ItmPrice = (Label)gvr.FindControl("ItmPrice");
Label ItmName = (Label)gvr.FindControl("lblName");
TextBox ItmQty = (TextBox)gvr.FindControl("ItmQty");
TextBox ItmID = (TextBox)gvr.FindControl("lblItemID");
//Add entry to Order Table
SqlDataSource2.InsertParameters.Add("OrderDate", DateTime.Now.ToString("MMMM dd, yyyy"));
SqlDataSource2.InsertParameters.Add("OrderTotal", "0");
SqlDataSource2.InsertParameters.Add("OrderAccount", "name");
SqlDataSource2.InsertParameters.Add("OrderCostCentre", ItmCostCode.Text);
SqlDataSource2.Insert();
//TODO: GET ORDERID HERE TO USE BELOW:
if (cb.Checked)
{
double Price = Convert.ToDouble(ItmPrice.Text);
double Qty = Convert.ToDouble(ItmQty.Text);
Total = Price * Qty;
OrderTotal = OrderTotal + Total;
MailBody = MailBody + "Item: "+ItmName.Text+" Quantity: "+ItmQty.Text+" Total: "+ItmTotal.Text+"\n\r";
//Add entry to Transaction Table
SqlDataSource3.InsertParameters.Add("ItemID", ItmID.Text);
SqlDataSource3.InsertParameters.Add("OrderID", );
SqlDataSource3.InsertParameters.Add("Price", ItmPrice.Text);
SqlDataSource3.Insert();
}
//TODO: Update Order table with OrderTotal
}
string strOrderTotal = OrderTotal.ToString();
MailBody = MailBody+"Order Total: " + strOrderTotal+"\n\r";
MailBody = MailBody + "Cost Code: " + ItmCostCode.Text;
MailService.Service1 Mailer = new MailService.Service1();
Mailer.SendMail("Text", MailFrom, MailTo, MailCC, MailBCC, MailSubject, MailBody, MailReplyTo);
}
use scope identity at the end of your insert query and it will return inserted ID like...
INSERT INTO table (ColumnName) VALUES ();
GO
SELECT SCOPE_IDENTITY();
Edit: for your help, here is some article that can help you to implement
http://msdn.microsoft.com/en-us/library/z72eefad.aspx
http://www.mikesdotnetting.com/Article/54/Getting-the-identity-of-the-most-recently-added-record http://www.objectreference.net/post/SCOPE_IDENTITY()-return-the-id-from-the-database-on-insert.aspx