1

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

我正在尝试找出如何使用插入...返回或类似的方法。

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

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

有谁知道这是否可行,如果可以,它是如何完成的?

谢谢

提供的编辑
代码:

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)
4

1 回答 1

0

根据此线程 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?;
于 2013-03-30T07:21:14.063 回答