Firebird插入...返回asp.net

时间:2013-03-28 11:58:02

标签: asp.net sql firebird

我正在使用Firebird 2.5和asp.net(4.5)。

我正在尝试找出如何使用insert ...返回或某些等效项。

使用fbDataReader,它执行插入OK,但无论如何我都找不到访问返回的值。使用fbDataReader.GetName(0)似乎工作正常,返回“returns”子句中的变量名称。这甚至适用于子选择中的max(): .....返回(从用户中选择max(userid)作为newid) 返回文本“newid”。 我无法找到价值在哪里或是否可用。

使用fbDataAdaptor填充DataTable,插入工作正常,但数据表似乎为空。

是否有人知道这是否可行,如果可行,该怎么做?

由于

EDIT
提供的代码:

strConn = .... 
dbConn = New FirebirdSql.Data.FirebirdClient.FbConnection(strConn)
dbConn.Open()

MySQL = "insert into  users (Firstname, Lastname) VALUES (@fname,@lname) returning userid"
FbC = New FirebirdSql.Data.FirebirdClient.FbCommand(MySQL, dbConn)
FbC.Parameters.Add("fname", FirebirdSql.Data.FirebirdClient.FbDbType.Text).Value = "Pete"
FbC.Parameters.Add("lname", FirebirdSql.Data.FirebirdClient.FbDbType.Text).Value = "Davis"

FbDataReader = FbC.ExecuteReader()
FbDataReader.Read()
TextBox1.Text = FbDataReader.GetName(0)
'TextBox1.Text  = str(FbDataReader.GetInt64())
'TextBox1.Text = FbDataReader.GetString(0)
TextBox1.Text = FbDataReader.GetValue(0)

1 个答案:

答案 0 :(得分:0)

根据this thread INSERT ... RETURNING ...的行为类似于Firebird .NET提供程序的输出参数。所以你需要添加一个输出参数。

所以类似下面的代码应该有效:

FbParameter outParam = new FbParam("userid", FbDbType.Integer) 
   {
      Direction = ParameterDirection.Output
   };
FbC.Parameters.Add(outParam);
FbC.ExecuteNonQuery();
int? userId = outParam.Value as int?;