ich auf die Antwort geprüft siehe „How to get last inserted id?“Der Wert der letzten eingefügten Zeile in SQL Server
Also hier weit ist das, was ich getan habe.
SqlCommand cmdInsert = new SqlCommand("INSERT INTO normal_asset(n_asset_serialNo,n_asset_propertyNo,n_asset_brandModel,n_asset_unitCost,n_asset_acquisitionDate,equitype_id,region_id) OUTPUT INSERTED.N_Asset_ID VALUES ('" + assetSerial + "','" + assetProperty + "','" + assetBrand + "','" + assetCost + "','" + assetAcquisition + "','" + assetEquipment + "','" + Session["usersRegion"].ToString() + "')");
cmdInsert.CommandType = System.Data.CommandType.Text;
cmdInsert.Connection = conn;
cmdInsert.ExecuteNonQuery();
Decimal newId = (Decimal)cmdInsert.ExecuteScalar();
SqlCommand cmdInsert2 = new SqlCommand("INSERT INTO asset(n_asset_id,office_id,asset_status,asset_accountable,asset_remarks) VALUES ('" + newId + "','" + inputOffice + "','" + inputStatus + "','" + inputAccountable + "','" + inputRemarks + "'");
cmdInsert2.CommandType = System.Data.CommandType.Text;
cmdInsert2.Connection = conn;
cmdInsert2.ExecuteNonQuery();
Dann möchte ich die entsprechende ID erhalten, die n_asset_id
ist.
Das Problem ist die cmdInsert
ist verdoppeln seinen Einsatz (vielleicht in meinem wenn Bedingung), aber ich kann nicht die Decimal newId = (Decimal)cmdInsert2.ExecuteScalar();
korrekt ausgeführt werden. Ich habe versucht, es zu Int zu machen. dann string -> in int konvertieren, aber immer noch kein Glück.
Wie führst du 'cmdInsert2' aus, bevor du es definierst? Wenn das "cmdInsert" sein soll, dann "verdoppeln Sie seine Einfügung", weil Sie es zweimal ausführen. Auch was "if condition" meinen Sie? – David
Wenn ich es direkt nach 'cmdInsert' ausführe, dann muss die angenommene Variable' should'/'muss' in der' newId' gespeichert werden. – Fiendcoder1
Ich sehe, dass 'Dezimal newId = (Dezimal) cmdInsert2.ExecuteScalar(); 'steht 'cmdInsert2' Deklaration. Sie müssen die Zeile setzen * nach * deklarieren 'cmdInsert2' als' SqlCommand'. –