首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >插入记录时必须声明标量变量@ID

插入记录时必须声明标量变量@ID
EN

Stack Overflow用户
提问于 2015-05-21 08:45:20
回答 2查看 383关注 0票数 1

我在DB中插入一个记录,我使用内联查询,我必须获得生成的ID,这就是我要做的

代码语言:javascript
运行
复制
 var query = "INSERT INTO [Users] ([Username],[Password])  VALUES(@username,@pwd) SELECT @ID = SCOPE_IDENTITY()";
            OleDbParameter[] queryparam = new OleDbParameter[3];
            queryparam[0] = new OleDbParameter("@username", OleDbType.VarChar);
            queryparam[0].Value = "username";
            queryparam[1] = new OleDbParameter("@pwd", OleDbType.VarChar);
            queryparam[1].Value = "123456";
            queryparam[2] = new OleDbParameter("@ID", OleDbType.Integer);
            queryparam[2].Direction = ParameterDirection.Output;

             OleDbCommand myCommand = new OleDbCommand();
              myCommand.Connection = DBConnectionHelper.getConnection();
                myCommand.CommandText = query;
                myCommand.Parameters.AddRange(queryparam);
                adapter.InsertCommand = myCommand;               
                myCommand.ExecuteNonQuery();

我正在犯错误:

必须声明标量变量"@ID“。 必须声明标量变量"@username“。

我也试过使用(int)myCommand.ExecuteScalar(),但没有成功。

在这种情况下,如何获得生成的ID?

EN

回答 2

Stack Overflow用户

发布于 2015-05-21 09:05:07

根据我从您的问题中可以看出的,您已经声明了一个名为query的变量,并在其中编写了您的查询。而且,您的参数声明似乎是正确的。

现在问题可能在这一行中:

代码语言:javascript
运行
复制
myCommand.CommandText = _query;

变量是query,这里使用的是_query。因此,这可能就是为什么没有为该特定查询添加参数,从而导致错误。应该是这样的:

代码语言:javascript
运行
复制
myCommand.CommandText = query;

希望这一切都过去了。

票数 0
EN

Stack Overflow用户

发布于 2015-05-21 09:10:43

而不是选择使用Set @Id=Scope_Identity()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30368698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档