【问题标题】:Scalar Insert Query return null标量插入查询返回 null
【发布时间】:2017-07-03 16:00:49
【问题描述】:

我正在使用 Sybase 服务器,项目通过 DataSet 连接到数据库。 我在我的 tableAdapter 上创建了插入查询

INSERT INTO DBA.opt_port(port, port_level, prim, kluch_raz, speed, agr_port, port_bad)
VALUES (?, ?, ?, ?, ?, ?, ?)

查询执行模式设置为标量,但调用此查询后总是返回 null。

var newId = opt_portTableAdapter.InsertNewPort(int.Parse(textBox1.Text), int.Parse(textBox2.Text),
                        textBox3.Text, kluch, int.Parse(textBox4.Text), ToNullableInt(textBox5.Text),
                        ToNullableInt(textBox6.Text))

我还在查询参数集合中添加了参数,将 Direction 设置为 ReturnValue 并将 SourceColumn 设置为我的主键,但结果仍然为空。 当我手动检查表中的新记录时,它存在并且它的 pKey 已设置。 插入行后如何获取主键?

表创建查询是

CREATE TABLE "DBA"."opt_port" (
    "port" smallint NOT NULL,
    "port_level" smallint NOT NULL DEFAULT 1,
    "prim" char(128) NULL,
    "n_pp" integer NOT NULL DEFAULT autoincrement,
    "kluch_raz" smallint NULL,
    "speed" smallint NULL,
    "agr_port" smallint NULL,
    "port_bad" smallint NULL,
    PRIMARY KEY ( "n_pp" )
);

【问题讨论】:

  • 尝试使用您传递的参数直接在 sql 中执行该过程并检查!

标签: c# sql dataset sybase tableadapter


【解决方案1】:

创建过程 [dbo].[Add_opt_port] (@input1 varchar(50), @input2 varchar(50), @id int 输出 )

作为 开始 设置无计数; 插入 DBA.opt_port (端口,端口级别) 值(@input1,@input2)

  SET @id=SCOPE_IDENTITY()
  RETURN  @id

结束

【讨论】:

  • 请像上面的例子一样创建程序。
猜你喜欢
  • 2015-11-30
  • 1970-01-01
  • 2019-11-02
  • 2021-11-30
  • 1970-01-01
  • 2016-09-06
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多