我有這個代碼插入到多個表中的數據。我的問題是如何在數據庫中插入後捕獲多個返回並將其存儲在變量中。c#事務從sql或firebird的NonQuery捕獲單個/多個返回(字段)
我將使用返回的值將其插入另一個表中。
順便說一句fbtransaction
與SQL事務幾乎相同。我只需要檢索值
- tbl_employee(表1)
- EMPID PK(汽車公司)
- empMonitorID(汽車公司)
- positionID FK
- 名字
- 姓氏
這是我的代碼
using FirebirdSql.Data.FirebirdClient;
DBconnection dbConString = new DBconnection(); //initialize connectDB with connection string
FbConnection dbConnect = new FbConnection(dbConString.getConnectionString()); // connect to database using connectdb
dbConnect.Open();
FbTransaction transaction = dbConnect.BeginTransaction(); // instantiate transaction
try
{
FbCommand myCommand = new FbCommand(getQueryStrings(), dbConnect, transaction);
string return_empid = myCommand.ExecuteNonQuery()// have no idea how the return EmpID
string return_empMonitorID = myCommand.ExecuteNonQuery()// have no idea how to retrieve empMonitorID
FbCommand myCommand2 = new FbCommand(getQueryStrings(return_empid), dbConnect, transaction);//need to add return_empid to be insertted to the postion table
myCommand2.ExecuteNonQuery()
transaction.Commit();
}
catch (Exception x)
{
transaction.Rollback();
MessageBox.Show("No Update has been made. Error (" +
x.Message + ")");
}
finally
{
dbConnect.Close();
}
private void getQueryStrings()
{
return " insert into tbl_employee (positionID,first name,last name) values
('" + txtposiID + "','" + fname + "','" + lname + "'
) returning empID, empMonitorID ;" //this query returns emp id and emp monitor id
}
UPDATE:
我試圖用這個代碼,但我似乎無法使它發揮作用。任何人都可以糾正我,如果這可以工作
string return_empid = = (string)myCommand.ExecuteScalar();
你是什麼意思_「catch multiple returns value」_? – 2014-10-22 07:45:27
,你可以在我的插入語句中看到數據庫將返回或將返回2 EMPID和empMonitorID的ID。 EmpID和Empmonitorid是數據庫生成或自動遞增的 – Mandz 2014-10-22 07:49:08
啊,我知道,據我所知,你應該將它作爲查詢來執行(例如,你可以選擇),但我目前無法訪問visual studio,所以我可以不檢查。 – 2014-10-22 07:51:00