关于返回自增行值的获取的问题

问题描述

各位大师,请教返回自增值的问题,请大师们指教!我的后台代码:publicvoidSave(){SqlParameter[]SavePar=newSqlParameter[]{newSqlParameter("@ID",this.id.ToString()),newSqlParameter("@GOODZQMBID",this.GOODZQMBID),newSqlParameter("@goodsid",this.goodsid),newSqlParameter("@mcorder",this.mcorder),newSqlParameter("@zqmbid",this.zqmbid),newSqlParameter("@width",this.width),newSqlParameter("@height",this.height),newSqlParameter("@AddTime",DateTime.Now.ToString("yyyy-MM-ddHH:mm:ss"))};DataProviderSaveCon=newDataProvider();;if(this.id==0){SaveCon.ExecuteNonQuery("insertintoMc_GoodsZQMB(goodsid,zqmbid,width,height,AddTime,mcorder)values(@goodsid,@zqmbid,@width,@height,@AddTime,@mcorder);select@GOODZQMBID=@@IDENTITY;",SavePar);GOODZQMBID=???//把自增值给GOODZQMBID,我应该如何写?(ExecuteScalar()是无效的,它要求加入string,即ExecuteScalar(stringcommandtext)这样的格式)}

解决方案

解决方案二:
把select@GOODZQMBID=@@IDENTITY拿出来,单独执行。
解决方案三:
好麻烦啊,用EF啊。。
解决方案四:
不应该用 ExecuteNonQuery
解决方案五:
引用1楼guwei4037的回复:

把select@GOODZQMBID=@@IDENTITY拿出来,单独执行。

SaveCon.ExecuteNonQuery("insertintoMc_GoodsZQMB(goodsid,zqmbid,width,height,AddTime,mcorder)values(@goodsid,@zqmbid,@width,@height,@AddTime,@mcorder)",SavePar);SaveCon.ExecuteNonQuery(select@GOODZQMBID=@@IDENTITY);这样是吗?然后怎么写啊?GOODZQMBID=???
解决方案六:
直接执行select@@IDENTITY
解决方案七:
引用5楼guwei4037的回复:

直接执行select@@IDENTITY

请问直接SaveCon.ExecuteNonQuery("select@@IDENTITY");如何取得值啊?
解决方案八:
不要用ExecuteNonQuery,用ExecuteScale(返回第一行第一列的值的方法)。
解决方案九:
引用7楼guwei4037的回复:

不要用ExecuteNonQuery,用ExecuteScale(返回第一行第一列的值的方法)。

GOODZQMBID=SaveCon.ExecuteScalar("SELECT@@IDENTITY");无法将object转化为int
解决方案十:
强制转换一下。。。
解决方案十一:
引用9楼guwei4037的回复:

强制转换一下。。。

GOODZQMBID=Convert.ToInt32(SaveCon.ExecuteScalar("SELECT@@IDENTITY"));对象不能从DBNull转换为其他类型
解决方案十二:
objectobj=SaveCon.ExecuteScalar("SELECT@@IDENTITY");if(obj!=null){GOODZQMBID=Convert.ToInt32(SaveCon.ExecuteScalar("SELECT@@IDENTITY"));}
解决方案十三:
引用11楼guwei4037的回复:

objectobj=SaveCon.ExecuteScalar("SELECT@@IDENTITY");if(obj!=null){GOODZQMBID=Convert.ToInt32(SaveCon.ExecuteScalar("SELECT@@IDENTITY"));}

对象不能从DBNull转换为其他类型。源错误:GOODZQMBID=Convert.ToInt32(SaveCon.ExecuteScalar("SELECT@@IDENTITY"));
解决方案十四:
using(SqlConnectionconn=newSqlConnection()){conn.ConnectionString="server=.;uid=sa;pwd=123456;database=test;";conn.Open();SqlCommandcmd=newSqlCommand("insertintotest(name)values('hello21')",conn);cmd.ExecuteNonQuery();cmd.CommandText="select@@IDENTITY";objectobj=cmd.ExecuteScalar();if(obj!=null){Console.WriteLine(obj.ToString());}}

解决方案十五:
引用13楼guwei4037的回复:

using(SqlConnectionconn=newSqlConnection()){conn.ConnectionString="server=.;uid=sa;pwd=123456;database=test;";conn.Open();SqlCommandcmd=newSqlCommand("insertintotest(name)values('hello21')",conn);cmd.ExecuteNonQuery();cmd.CommandText="select@@IDENTITY";objectobj=cmd.ExecuteScalar();if(obj!=null){Console.WriteLine(obj.ToString());}}

请问还有其它办法么?
解决方案:
先执行插入语句。然后执行查询语句:selectmax(id)from表名。
解决方案:
http://blog.csdn.net/apollokk/article/details/34804035
解决方案:
引用16楼apollokk的回复:

http://blog.csdn.net/apollokk/article/details/34804035

能不能通过代码实现?

时间: 2024-11-05 19:36:08

关于返回自增行值的获取的问题的相关文章

【SQL】找出行数与自增标识值不相等的表(即有缺行)

原文:[SQL]找出行数与自增标识值不相等的表(即有缺行) 环境:mssql ent 2k8 r2 原理:遍历所有含自增列的用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,然后使用IDENT_CURRENT函数获取表的最大标识值,比较二者并返回结果 IF OBJECT_ID('tempdb..#TableRowCount','U') IS NOT NULL DROP TABLE #TableRowCount GO CREATE TABLE #TableRowCount (

asp 操作表格行-ASP 如何获取在运行时由用户添加的表格行中单元格控件中的值?

问题描述 ASP 如何获取在运行时由用户添加的表格行中单元格控件中的值? 如图中,用户点击添加或移除按钮后,即可增加或删除一行.增加的新行就是当前最后一行的克隆行.(这部分代码JS都已实现).而"提交申请"就是将当前表格中的所有内容提交保存到数据库.**而我要问的是,由JS克隆新增加的行中各个单元格里控件的值如何获取提交?** 附:表格增加行或删除行的JS代码如下: function addRow() { var oTr = document.getElementById("

Coolite 中前台获取 GridPanel 当前选择行值的代码_应用技巧

主要目的 a. 掌握获取 GridPanel 当前行的各个字段值的方法 b. 掌握如何将前台数据传递到后台,并将后台操作结果返回到前台 c. 掌握如何获取和设置 button 和 textField 控件的文本值 主要内容 a. 我们先在页面中添加三个 ext 组件:store, menu,gridpanel b. 将 gridpanel 的contextmenuID 设置为 menu 控件的ID, 从而为GridPanel 添加右键菜单 复制代码 代码如下: <ext:Store ID="

Coolite 中前台获取 GridPanel 当前选择行值的代码

主要目的 a. 掌握获取 GridPanel 当前行的各个字段值的方法 b. 掌握如何将前台数据传递到后台,并将后台操作结果返回到前台 c. 掌握如何获取和设置 button 和 textField 控件的文本值 主要内容 a. 我们先在页面中添加三个 ext 组件:store, menu,gridpanel b. 将 gridpanel 的contextmenuID 设置为 menu 控件的ID, 从而为GridPanel 添加右键菜单 复制代码 代码如下: <ext:Store ID="

url-datagrid使用getgetSelections获取了几行值,怎么实现批量修改

问题描述 datagrid使用getgetSelections获取了几行值,怎么实现批量修改 var rows = $('#table').datagrid('getSelections'); for(var i=rows.length-1;i>=0;i--){ var url="toOrderUpdate.do?orderId=" + rows[i].id + "&oldState=" + rows[i].orderState; } 能这样传吗 这样

Python+MongoDB自增键值的简单实现_python

背景 最近在写一个测试工具箱,里面有一个bug记录系统,因为后台我是用Django和MongoDB来实现的,就遇到了一个问题,要如何实现一个自增的字段. 传统的关系型数据库要实现起来是非常容易,只要直接设置一个自增字段就行了,插入数据时不用管这个键值,只管自己处理的数据就行了,会自动实现自增的功能,但是非关系型数据库好像没有这个功能(或者我不知道).百度之后发现都是MongoDB的设置方法,并不是我想要的. 解决思路 百度没有找到好的思路,那就只能自己解决了,我的想法很简单,字段不会自增,那么就

mongodb的java开发查询返回结果后取值的问题

问题描述 mongodb的java开发查询返回结果后取值的问题 用find查询会返回一个document,但是这个document只能获取一级key的数据,如果我想要获得某个子目录的下的数据应该怎么做,好像用get方法取出来的并不谁document类型也就没 办法转型后继续用get方法来取值.比如 {"table":{field:"字段1"}}这个数据格式,在结果的document里可以用get("table")的方式获得"{field

jquery 表格的增行删行实现思路_jquery

在做后台中遇到的情况,分享下 复制代码 代码如下: <!DOCTYPE html> <html> <head> <title>表格增行,删行处理</title> <script type="text/javascript" src="http://jt.875.cn/js/jquery"></script> </head> <body> <script&

js表单中选择框值的获取及表单的序列化_javascript技巧

本文特意为js表单中选择框值的获取及表单的序列化做了下总结,写成了一个对象,分享给大家,欢迎大家学习. var formUtil = { // 获取单选按钮的值,如有没有选的话返回null // elements为radio类的集合的引用 getRadioValue:function(elements) { var value = null; // null表示没有选中项 // 非IE浏览器 if(elements.value != undefined && elements.value