【问题标题】:Firebird insert...returning asp.netFirebird 插入...返回 asp.net
【发布时间】:2013-03-28 11:58:02
【问题描述】:

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

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

使用 fbDataReader,它执行插入 OK,但无论如何我都找不到访问返回值的方法。使用 fbDataReader.GetName(0) 似乎工作正常,在“返回”子句中返回变量名。这甚至适用于子选择中的 max(): .....返回(从用户中选择max(userid)作为newid) 返回文本“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)

【问题讨论】:

  • 我删除了我的原始答案史蒂夫,希望有人会发现未回答的问题并介入。我尝试添加额外的信息,但编辑没有显示:(

标签: asp.net sql firebird


【解决方案1】:

根据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?;

【讨论】:

  • 感谢您的帮助,我没有让它工作 - 和以前一样的问题。将其编写为存储过程效果很好,所以我就这样完成了。
猜你喜欢
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
  • 2014-02-02
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多