2010-SCOPE_IDENTITY() AS INT;返回值的问题,求请前辈们教诲。感激不尽,小子拜谢。

问题描述

SCOPE_IDENTITY() AS INT;返回值的问题,求请前辈们教诲。感激不尽,小子拜谢。

比如说我里面有三行数据我添加商品如图

添加成功之后
到VS调试。。如图点击右键添加商品菜单之后

调试第一次添加成功(添加了几项)

但是问题来了随后删除不了添加的商品找不到tag属性保存的Id。如图

我试着再次调试发现可以删除了(删除完)。
让后我用f5调试发现其实在添加ID是保存了的。
最大问题来了。在进行之前的操作之后。再次调试添加就会发生我最为疑惑事。
通过select CAST(SCOPE_IDENTITY() AS INT)返回值
tag的值无论进行多少次添加都是数字1。不知道为什么。各位前辈求解??拜谢
VS代码如下:
private void Form2_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt = DBHelper.query("select CardsId,CardsName from Cards");
for (int i = 0; i < dt.Rows.Count; i++)
{
treeView1.Nodes[0].Nodes.Add(dt.Rows[i]["CardsName"].ToString());var node = treeView1.Nodes[0].Nodes[treeView1.Nodes[0].Nodes.Count - 1];
node.ImageIndex = 1;
node.SelectedImageIndex = 0;
node.ContextMenuStrip = contextMenuStrip1;
node.Tag = dt.Rows[i]["CardsId"];
}
}

    private void 添加商品ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        int id = DBHelper.cute("INSERT INTO Cards VALUES ('新商品')SELECT @@IDENTITY AS 'Identity'");
        if(id <= 0)
        {
            MessageBox.Show("添加失败。");
            return;
        }
       //添加商品
        var node = treeView1.Nodes[0].Nodes.Add("新品牌");
        node.ImageIndex = 1;
        node.SelectedImageIndex = 0;
       //绑定菜单
        node.ContextMenuStrip = contextMenuStrip1;
        //保存节点
        node.Tag = id;
       //找到选择项
        treeView1.SelectedNode = node;
       //开始编辑
       node.BeginEdit();
    }

    private void 删除商品ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string id  = treeView1.SelectedNode.Tag.ToString();
        int num = DBHelper.execute(string.Format("DELETE FROM Cards WHERE CardsId = ") + id);
        if (num > 0)
        {
            treeView1.Nodes[0].Nodes.Remove(treeView1.SelectedNode);
        }
        else {
            MessageBox.Show("删除失败");
        }
    }

    private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        treeView1.SelectedNode.BeginEdit();
    }

    private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
    {
        if(e.Label == null)
        {
            e.CancelEdit = true;
            return;
        }
        DialogResult dr = MessageBox.Show("是否修改商品信息", "修改", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        if (DialogResult.No == dr)
        {
            e.CancelEdit = true;
            return;
        }
        string id = treeView1.SelectedNode.Tag.ToString();
        string sql = string.Format("update Cards set CardsName  = '{0} ' where CardsId = {1}", e.Label, id);
        int num = DBHelper.execute(sql);
        if (num <= 0)
        {
            e.CancelEdit = true;
            MessageBox.Show("保存失败");
        }
        else {
        }
    }

解决方案

你的DBHelper.execute返回的是影响的行数,不是select的结果吧

解决方案二:

我做了个 返回的方法。
public static int cute(string sql)
{
//表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程
SqlCommand com = new SqlCommand(sql, con);
con.Open();
//发送sql语句
int num = (int)com.ExecuteNonQuery();
con.Close();
return num;
}

时间: 2024-12-30 12:21:50

2010-SCOPE_IDENTITY() AS INT;返回值的问题,求请前辈们教诲。感激不尽,小子拜谢。的相关文章

struts2使用json插件,返回值为空,请前辈帮帮忙!

问题描述 环境:struts2-json-plugin-2.1.8.jar和jquery1.5.2.min.jsstruts.xml<packagename="ajax"extends="json-default"><actionname="regnow"method="RegisterNow"class="com.manage.struts.action.AjaxAction">&

java集合返回值异常。

问题描述 java集合返回值异常. 求大神指点为什么这个函数返回值是这样子的? model.OverallEnergyChart是一个包名加类名,这个是一个javabean类,为什么打印al里的值返回值是那样子的? 解决方案 楼上说的对,你控制台输出的是toString()方法的结果.你重写,就可以输出自己想要的了 解决方案二: JAVA返回值与异常Java异常时的返回值(java 基础知识) java异常抛出和返回值 解决方案三: 重写toSting()方法就可以了. 解决方案四: 控制台显示

iOS 按照UIDemo写的点击录音按钮动画,[[EMCDDeviceManager sharedInstance] emPeekRecorderVoiceMeter]返回值总是0

问题描述 SDK是用CocoaPods导入的,在写点击录音按钮播放动画时,需要根据音量大小改变动画图片,但是[[EMCDDeviceManager sharedInstance] emPeekRecorderVoiceMeter]方法返回值总是0,请大婶们帮忙看下 解决方案 已解决,加上下面代码就OK了

Entity Framework 5.0 调用存储过程 返回值为什么是int类型

问题描述 用VS2012+EntityFramework5.0生成代码但是生成的存储过程返回值有问题为什么生成的存储过程返回值为int类型??存储过程中操作复杂最后返回几个字段值.publicvirtualintGetMenuByRID(Nullable<int>rID){varrIDParameter=rID.HasValue?newObjectParameter("RID",rID):newObjectParameter("RID",typeof(i

C# 调用存储过程操作 OUTPUT参数和Return返回值

本文转载:http://www.cnblogs.com/libingql/archive/2010/05/02/1726104.html 存储过程是存放在数据库服务器上的预先编译好的sql语句.使用存储过程,可以直接在数据库中存储并运行功能强大的任务.存储过程在第一应用程序执行时进行语法检查和编译,编译好的版本保存在高速缓存中.在执行重复任务时,存储过程可以提高性能和一致性.由于存储过程可以将一系列对数据库的操作放在数据库服务器上执行,因而可以降低Web服务器的负载,提高整个系统的性能.   1

一个类如何实现两个接口中同名同参数不同返回值的函数

假设有如下两个接口: public interface IA{    string GetA(string a);}public interface IB{    int GetA(string a);} 他们都要求实现方法GetA,而且传入的参数都是一样的String类型,只是返回值一个是String一个是Int,现在我们要声明一个类X,这个类要同时实现这两个接口: public class X:IA,IB 由于接口中要求的方法的方法名和参数是一样的,所以不可能通过重载的方式来解决,那么我们该

字符串-一个很基础的返回值问题

问题描述 一个很基础的返回值问题 想要打印字符串数组,去掉中间的空格和Tab,并且删除全为空的行,哪里有错?谢谢. #include #define MAXLINE 1000 int getline(char line[], int maxline); int copy(char to[],char from[]); int main(){ int len; int max; char line[MAXLINE]; max=0; while ((len=getline(line,MAXLINE)

谢谢 救急-为什么我截图发送给一个答题接口,获得返回值之后传给游戏程序 取不到值。谢谢各位了

问题描述 为什么我截图发送给一个答题接口,获得返回值之后传给游戏程序 取不到值.谢谢各位了 static BOOL SyncGetAnswer(LPCSTR szJpgFile LPCSTR& szAnswer){ BOOL bResult = FALSE; HMODULE hMod = NULL; TRYBLOCK_START CHAR szPath[MAX_PATH] = {0}; // 发送答题 wsprintfA(szPath%slldm.dll"" GetAppPat

Object转Integer类型失败,转Long型可以,方法返回值为1,并没有超过两个类型的范围

问题描述 Object转Integer类型失败,转Long型可以,方法返回值为1,并没有超过两个类型的范围 在网上找的尚硅谷的教学视频 其中有添加权限一段 String hql="select count(*) from Right r where r.rightUrl=?"; //此处不能用integer只能Long Long count=(Long) this.uniqueResult(hql, url); System.out.println(count); 下面是uniqueR