回答

收藏

获取刚刚插入的记录ID?

技术问答 技术问答 129 人阅读 | 0 人回复 | 2023-09-12

我正在处理用户从gridview所选项目,并插入电子邮件和数据库。
6 v( Q8 o* i5 o- B( F/ l当用户选择一个按钮时,下面的代码从gridview获取信息,在Order在表中创建新订单,并在表中创建新订单Transactions在表中创建新条目。9 p/ J1 s3 m5 k6 F
如何使用这种插入记录方法获得最终插入?ID?你会为这个简单的问题推荐其他方法吗?
! q/ N; Y5 s9 }% Q1 R5 E1 Fprotected 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(&quotrice",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);}                6 d9 f+ ]1 U  `% w% x0 y; B
    解决方案:                                                               
! ^6 [' N. c& V: v                                                                在插入查询的末尾使用作用域标志,它将返回插入ID,例如…( p$ P5 n6 g, j( m7 g
INSERT INTO table (ColumnName) VALUES ();GOSELECT SCOPE_IDENTITY();编辑:    这是一些可以帮助你实施的文章
  d3 C- G( X$ F; m$ y! Zhttp://msdn.microsoft.com/en-
/ G$ ?- d% A3 N' ~3 Y0 Y! Ius/library/z72eefad.aspx1 V' w) b' O6 M# X; W
http://www.mikesdotnetting.com/Article/54/Getting-the-identity-of-the-most-
+ m* B1 p3 I" N- Krecently-add-record-记录
: N+ O  g9 E# f) r5 O$ B- j, Xhttp://www.objectreference.net/post/SCOPE_IDENTITY()-return-the插入数据库-9 o3 G0 |1 D; f  X; `4 L
id
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则